{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Mahalanobis outlier detection on KDD Cup '99 dataset\n",
    "\n",
    "## Method\n",
    "\n",
    "The Mahalanobis online outlier detector aims to predict anomalies in tabular data. The algorithm calculates an outlier score, which is a measure of distance from the center of the features distribution ([Mahalanobis distance](https://en.wikipedia.org/wiki/Mahalanobis_distance)). If this outlier score is higher than a user-defined threshold, the observation is flagged as an outlier. The algorithm is online, which means that it starts without knowledge about the distribution of the features and learns as requests arrive. Consequently you should expect the output to be bad at the start and to improve over time.\n",
    "\n",
    "## Dataset\n",
    "\n",
    "The outlier detector needs to detect computer network intrusions using TCP dump data for a local-area network (LAN) simulating a typical U.S. Air Force LAN. A connection is a sequence of TCP packets starting and ending at some well defined times, between which data flows to and from a source IP address to a target IP address under some well defined protocol. Each connection is labeled as either normal, or as an attack.\n",
    "\n",
    "There are 4 types of attacks in the dataset:\n",
    "\n",
    "- DOS: denial-of-service, e.g. syn flood;\n",
    "- R2L: unauthorized access from a remote machine, e.g. guessing password;\n",
    "- U2R: unauthorized access to local superuser (root) privileges;\n",
    "- probing: surveillance and other probing, e.g., port scanning.\n",
    "\n",
    "The dataset contains about 5 million connection records.\n",
    "\n",
    "There are 3 types of features:\n",
    "\n",
    "- basic features of individual connections, e.g. duration of connection\n",
    "- content features within a connection, e.g. number of failed log in attempts\n",
    "- traffic features within a 2 second window, e.g. number of connections to the same host as the current connection"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This notebook requires the `seaborn` package for visualization which can be installed via `pip`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install seaborn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true,
    "tags": []
   },
   "outputs": [],
   "source": [
    "import matplotlib\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import os\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "from sklearn.metrics import confusion_matrix, f1_score\n",
    "from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder\n",
    "\n",
    "from alibi_detect.od import Mahalanobis\n",
    "from alibi_detect.datasets import fetch_kdd\n",
    "from alibi_detect.utils.data import create_outlier_batch\n",
    "from alibi_detect.utils.fetching import fetch_detector\n",
    "from alibi_detect.utils.mapping import ord2ohe\n",
    "from alibi_detect.saving import save_detector, load_detector\n",
    "from alibi_detect.utils.visualize import plot_instance_score, plot_roc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load dataset\n",
    "\n",
    "We only keep a number of continuous (18 out of 41) features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(494021, 18) (494021,)\n"
     ]
    }
   ],
   "source": [
    "kddcup = fetch_kdd(percent10=True)  # only load 10% of the dataset\n",
    "print(kddcup.data.shape, kddcup.target.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Assume that a machine learning model is trained on *normal* instances of the dataset (not outliers) and standardization is applied:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(100000, 18) (100000,)\n",
      "0.0% outliers\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(0)\n",
    "normal_batch = create_outlier_batch(kddcup.data, kddcup.target, n_samples=100000, perc_outlier=0)\n",
    "X_train, y_train = normal_batch.data.astype('float'), normal_batch.target\n",
    "print(X_train.shape, y_train.shape)\n",
    "print('{}% outliers'.format(100 * y_train.mean()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "mean, stdev = X_train.mean(axis=0), X_train.std(axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define outlier detector\n",
    "\n",
    "We train an outlier detector from scratch.\n",
    "\n",
    "Be aware that `Mahalanobis` is an online, stateful outlier detector. Saving or loading a Mahalanobis detector therefore also saves and loads the state of the detector. This allows the user to *warm up* the detector before deploying it into production."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No threshold level set. Need to infer threshold using `infer_threshold`.\n"
     ]
    }
   ],
   "source": [
    "filepath = 'my_path'  # change to directory where model is saved\n",
    "detector_name = 'Mahalanobis'\n",
    "filepath = os.path.join(filepath, detector_name)\n",
    "\n",
    "# initialize and save outlier detector\n",
    "threshold = None  # scores above threshold are classified as outliers   \n",
    "n_components = 2  # nb of components used in PCA\n",
    "std_clip = 3  # clip values used to compute mean and cov above \"std_clip\" standard deviations\n",
    "start_clip = 20  # start clipping values after \"start_clip\" instances\n",
    "\n",
    "od = Mahalanobis(threshold, \n",
    "                 n_components=n_components,\n",
    "                 std_clip=std_clip,\n",
    "                 start_clip=start_clip)\n",
    "\n",
    "save_detector(od, filepath)  # save outlier detector"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The warning tells us we still need to set the outlier threshold. This can be done with the `infer_threshold` method. We need to pass a batch of instances and specify what percentage of those we consider to be normal via `threshold_perc`. Let's assume we have some data which we know contains around 5% outliers. The percentage of outliers can be set with `perc_outlier` in the `create_outlier_batch` function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5.0% outliers\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(0)\n",
    "perc_outlier = 5\n",
    "threshold_batch = create_outlier_batch(kddcup.data, kddcup.target, n_samples=1000, perc_outlier=perc_outlier)\n",
    "X_threshold, y_threshold = threshold_batch.data.astype('float'), threshold_batch.target\n",
    "X_threshold = (X_threshold - mean) / stdev\n",
    "print('{}% outliers'.format(100 * y_threshold.mean()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "New threshold: 10.670934046719518\n"
     ]
    }
   ],
   "source": [
    "od.infer_threshold(X_threshold, threshold_perc=100-perc_outlier)\n",
    "print('New threshold: {}'.format(od.threshold))\n",
    "threshold = od.threshold"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Detect outliers\n",
    "\n",
    "We now generate a batch of data with 10% outliers, standardize those with the `mean` and `stdev` values obtained from the normal data (*inliers*) and detect the outliers in the batch. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000, 18) (1000,)\n",
      "10.0% outliers\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "outlier_batch = create_outlier_batch(kddcup.data, kddcup.target, n_samples=1000, perc_outlier=10)\n",
    "X_outlier, y_outlier = outlier_batch.data.astype('float'), outlier_batch.target\n",
    "X_outlier = (X_outlier - mean) / stdev\n",
    "print(X_outlier.shape, y_outlier.shape)\n",
    "print('{}% outliers'.format(100 * y_outlier.mean()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Predict outliers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "od_preds = od.predict(X_outlier, return_instance_score=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now save the *warmed up* outlier detector:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "save_detector(od, filepath)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Display results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "F1 score and confusion matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "F1 score: 0.9693877551020408\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "labels = outlier_batch.target_names\n",
    "y_pred = od_preds['data']['is_outlier']\n",
    "f1 = f1_score(y_outlier, y_pred)\n",
    "print('F1 score: {}'.format(f1))\n",
    "cm = confusion_matrix(y_outlier, y_pred)\n",
    "df_cm = pd.DataFrame(cm, index=labels, columns=labels)\n",
    "sns.heatmap(df_cm, annot=True, cbar=True, linewidths=.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot instance level outlier scores vs. the outlier threshold:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_instance_score(od_preds, y_outlier, labels, od.threshold, ylim=(0,50))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also plot the ROC curve for the outlier scores of the detector:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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vnxZnTt31pYtW1SkSBFJ0vXr19WkSROFh4erePHits4IAECG/vjjD73//vtasmSJChcurOHDh6tPnz72jgUAyOOsvierb9++unnzpo4cOaJr167p2rVrOnz4sOLj49WvX7+syAgAQDpXrlyRJDk4OGjHjh0KDQ1VbGysPvzwQxUtWtTO6QAAeZ3VI1kRERFav369qlevbml7/PHHNXPmTLVo0cKm4QAAuMMwDG3cuFHjxo3ToUOHFBMTIy8vL504cYJVAgEAjxSrR7LMZrOcnZ3vand2drY8PwsAAFsxDEOrVq1S/fr1FRAQoD///FMzZ86Uq6urJFFgAQAeOVYXWU2bNlX//v11/vx5S9u5c+c0cOBANWvWzKbhAAB5V2pqquXzcePGyd3dXREREdq7d686derEirYAgEeW1UXWjBkzFB8fLx8fH1WsWFEVK1ZU+fLlFR8fr+nTp2dFRgBAHpKYmKgZM2aoUqVK2rlzp0wmkzZs2KDNmzcrMDCQkSsAwCPP6nuyvL29tW/fPm3YsMGyhHv16tUVEBBg83AAgLzj+vXrmjVrlqZMmaJr166pS5culhVrCxUqZOd0AABknlVF1rJly7RmzRolJyerWbNm6tu3b1blAgDkMZMnT9ann36qnj17aujQoapQoYK9IwEA8EAyXWR9/vnneuedd1S5cmXly5dP33zzjU6dOqXQ0NCszAcAyKWio6MVGhqqsmXLatiwYRowYIDefPNNlSpVyt7RAAB4KJm+J2vGjBkaNWqUoqKidODAAX311VeaNWtWVmYDAORCR44cUbdu3VS5cmWtWLFC+fPnlyQ99thjFFgAgFwh00XW6dOn1aNHD8vr4OBgpaam6sKFC1kSDACQ+xw5ckRPPPGEtmzZosmTJys2Npap5wCAXCfT0wVv375t+WujJDk4OMjFxUW3bt3KkmAAgJzPMAxFRkbq+++/19SpU/X444/r22+/VcuWLeXi4mLveAAAZAmrFr744IMP5O7ubnmdnJyssWPHqnDhwpa2SZMm2S4dACBHSktL06pVqzR+/Hjt3btX/v7+un79uh577DG9+OKL9o4HAECWynSR9cwzzygqKipdW8OGDXX69GnLa55dAgAwDEPPPvusduzYoaZNmyoyMlLNmjXjZwQAIM/IdJG1efPmLIwBAMjJEhISNHfuXHXp0kWenp7q37+/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XVJ4eLgWLFhg71gAAAA5Sp6tMiZ3qqnyHvntHQOwu9TUVB06dEi1a9eWp6enihQponXr1qlly5Y83woAAOAB5Nkiy7OQm70jAHZ169YtLViwQKGhobp69arOnz+vwoUL64cffrB3NAAAgBwtT08XBPIiwzD06aefqnz58urbt6+eeuopbdu2TQUKFLB3NAAAgFwhz45kAXlNXFycihUrJpPJpO3bt6tt27YaOnSoKlWqZO9oAAAAuQojWUAuFxsbq759+8rb21vr1q2TJK1Zs0ZffvklBRYAAEAWoMgCcqmjR4+qR48eqlSpkpYuXarhw4erQYMGksSCFgAAAFmI6YJALpOamionJyetW7dOGzZsUGhoqHr37q38+VlNEwAAIDswkgXkAoZhaP369QoICNCgQYMkSe+8845Onz6tAQMGUGABAABkI4osIAczm8365ptvVL9+fTVv3lzXrl1T06ZNJUlubm5ycXGxc0IAAIC8h+mCQA529OhRdejQQc8++6wiIiLUokUL7rcCAACwM4osIAdJTEzUvHnztHbtWq1bt041atTQ77//rurVq9s7GgAAAP4/pgsCOcD169c1duxY+fj4aODAgfLw8NBff/0lSRRYAAAAjxhGsoBHnGEYeuaZZ3T8+HH17NlTQ4cOVYUKFewdCwAAAPfASBbwCIqOjtY777yjU6dOyWQy6fPPP1d0dLQ+//xzCiwAAIBHHEUW8Ag5fPiwXn75ZVWuXFnLly/X8ePHJUlPP/20SpUqZed0AAAAyAyKLOARMW3aNNWsWVNbt27VpEmTFBsbq1atWtk7FgAAAKzEPVmAnRiGocjISKWmpqp169Zq2bKlFixYoODgYJ5vBQAAkIM9EiNZM2fOlI+Pj9zc3FS/fn398ssv99x2zpw5aty4sR577DE99thjCggIuO/2wKMmLS1NK1euVN26dRUYGKivvvpKklSlShW98sorFFgAAAA5nN2LrGXLlmnQoEEaNWqU9u3bJ19fXwUGBury5csZbr9582Z17dpVmzZt0q5du+Tt7a0WLVro3Llz2ZwcsF50dLQef/xxderUSYULF1ZkZKTCw8PtHQsAAAA2ZPcia9KkSerdu7d69uypxx9/XF988YXc3d01f/78DLdfvHix3n77bdWqVUvVqlXT3LlzZTabtWHDhmxODmROQkKCvvvuO0mSt7e3mjRpot27d2vDhg0KCAiQyWSyc0IAAADYkl3vyUpOTtbevXs1fPhwS5uDg4MCAgK0a9euTB0jMTFRKSkpKlq0aIbv3759W7dv37a8jo+PlySlpqYqJSXlIdID93f58mUtW7ZMvXr10l9//aVTp07J09NT06dPlyT6H2zmTl+iTyGr0deQXehryC5Z1cfsWmTFxcUpLS1Nnp6e6do9PT117NixTB3jvffek5eXlwICAjJ8PyQkRKNHj76rfc+ePboRe8T60EAmLF68WN99953MZrMCAgLUtm1b7d27196xkMtFRkbaOwLyCPoasgt9DVktMTExS46bo1cXHD9+vMLDw7V582a5ublluM3w4cM1aNAgy+v4+Hh5e3urbt26erpGueyKijzg1KlT8vLyUr58+bR161b16dNHTzzxhDp16iRnZ2d7x0MulpKSosjISDVv3py+hixFX0N2oa8hu1y9ejVLjmvXIsvDw0OOjo66dOlSuvZLly6pZMmS9913woQJGj9+vNavX68nn3zyntu5urrK1dX1rnYnJyf+0cImfvvtN40fP17Lly/XzJkz9eabb2rixIlKSUnRunXr5OzsTF9DtqCvIbvQ15Bd6GvIalnVv+y68IWLi4vq1KmTbtGKO4tYNGjQ4J77ffbZZxozZowiIiLk7++fHVGBu+zbt09t2rRRrVq1tGvXLk2fPl09evSwdywAAADYmd2nCw4aNEg9evSQv7+/6tWrpylTpighIUE9e/aUJHXv3l2lS5dWSEiIJOnTTz/Vhx9+qCVLlsjHx0cXL16UJBUoUEAFChSw23UgbzAMQ/Hx8SpcuLBiYmIUHR2thQsXqkuXLvylDQAAAJIegSKrc+fOunLlij788ENdvHhRtWrVUkREhGUxjDNnzsjB4f8G3D7//HMlJyerY8eO6Y4zatQoffTRR9kZHXnInQcIjx8/Xt7e3lqzZo3atWundu3apeufAAAAgN2LLEnq06eP+vTpk+F7mzdvTvc6JiYm6wMB/9/t27e1aNEiffbZZzpx4oQCAgI0YMAASaK4AgAAQIYeiSILeNSYzWY5ODjoxo0bGjBggAIDA7VkyRLuAQQAAMC/osgC/sfVq1c1ffp0LV68WPv371eJEiUUGxurYsWK2TsaAAAAcgiKLEDSuXPnNHHiRM2ePVtms1mvvfaakpOTJYkCCwAAAFahyAIkvfzyyzpw4IAGDhyofv36qXjx4vaOBAAAgByKIgt50v79+zV+/Hi9/fbbevbZZzV79mx5enqqUKFC9o4GAACAHI7l0ZCnbNu2Ta1atZKfn5/27NmjhIQESVLlypUpsAAAAGATFFnIM+bOnatnnnlG586d0+LFi3X8+HG1bt3a3rEAAACQyzBdELlWamqqVqxYoevXr+utt95S+/btVbJkST3//PMymUz2jgcAAIBcipEs5DpJSUn68ssvVbVqVQUHB1seaF20aFG1adOGAgsAAABZipEs5CpXrlyRr6+vLl68qI4dO2rFihXy8/OzdywAAADkIYxkIceLi4vT9OnTZRiGihcvroEDB+rYsWNavnw5BRYAAACyHSNZyLHOnj2riRMnas6cOZKkli1bqnLlyho6dKidkwEAACAvYyQLOdJ7772nihUrauHChRo6dKjOnDmjypUr2zsWAAAAwEgWco69e/eqdOnSKlmypCpWrKiQkBC9/vrrKliwoL2jAQAAABaMZOGRZhiGNm/erMDAQPn7+1umBr7++usaPHgwBRYAAAAeORRZeGT98ssvatiwoZo0aaJLly4pPDxcI0aMsHcsAAAA4L6YLohHSmpqqv744w/5+PjI2dlZTk5OWrt2rVq1asXzrQAAAJAjUGThkXDr1i0tWLBAoaGhKliwoH777TfVrl1b27Zts3c0AAAAwCpMF4Rd3bp1S+PHj1f58uXVt29fPfXUU1q0aBGjVgAAAMixGMmCXSQkJCh//vxycHDQnDlz1LZtWw0dOlSVKlWydzQAAADgoVBkIVvFxsZqwoQJWrhwoQ4ePKhy5crp6NGjcnFxsXc0AAAAwCaYLohs8fvvv6tHjx6qVKmSli5dqsGDB6tw4cKSRIEFAACAXIWRLGQpwzBkMpk0btw4bd68WaGhoerdu7fy589v72gAAABAlmAkCzZnGIY2bNiggIAAhYWFSZKmTJmi06dPa8CAARRYAAAAyNUosmAzZrNZq1atUv369RUQEKBr167Jy8tLkuTh4cG0QAAAAOQJFFmwmW+++Ubt27eXu7u7IiIitHfvXgUGBto7FgAAAJCtuCcLDywxMVHz589XTEyMJkyYoLZt22rXrl166qmn7B0NAAAAsBtGsmC169eva+zYsfLx8VH//v11+fJlmc1mOTs7U2ABAAAgz2MkC1ZJTExUpUqVdPPmTfXs2VNDhw5VhQoV7B0LAAAAeGQwkoV/FR0draFDhyopKUnu7u76/PPPFR0drc8//5wCCwAAAPgHiizc0+HDh/Xyyy+rcuXKCgsL09GjRyVJnTp1UqlSpeycDgAAAHg0UWQhQ++++65q1qyprVu3avLkyYqNjVXt2rXtHQsAAAB45HFPFiT9/QDhyMhIeXl56YknnlCzZs30+OOPKzg4mOdbAQAAAFZgJCuPS0tL08qVK+Xv76/AwEAtXLhQkhQYGKhXXnmFAgsAAACwEiNZediePXv08ssv6/jx42ratKkiIyPVrFkze8cCAAA5iGEYSk1NVVpams2OmZKSIicnJyUlJdn0uMibnJ2d5ejomK3npMjKYxISEnTkyBHVq1dPZcqU0ZNPPqlFixapXr169o4GAABymOTkZF24cEGJiYk2Pa5hGCpZsqTOnj0rk8lk02Mj7zGZTCpTpowKFCiQbeekyMoj/vzzT82YMUNTp06Vi4uLzpw5o1KlSmnFihX2jgYAAHIgs9ms6OhoOTo6ysvLSy4uLjYriMxms27evKkCBQrIwYG7W/DgDMPQlStX9Mcff6hy5crZNqJFkZXLJScn6/3339cXX3yh1NRU9erVS0OGDJGTE//rAQDAg0tOTpbZbJa3t7fc3d1temyz2azk5GS5ublRZOGhFS9eXDExMUpJSaHIwsP5448/VKZMGTk7O+vgwYPq27ev+vfvL09PT3tHAwAAuQhFEB519phyyr+KXObgwYPq2rWrypUrpx07dshkMikiIkLjxo2jwAIAAACyAUVWLrF79261adNGvr6+2rVrl6ZNmyY/Pz9J9qneAQAAgLyK6YI5mGEYSklJkYuLi9auXavo6GgtXLhQXbp0kbOzs73jAQAAAHkSI1k5UFpampYtWyY/Pz+NHTtWkvT+++/r0KFD6tatGwUWAADAfbzyyisymUx6880373rvnXfekclk0iuvvHLX9iaTSc7OzvL09FTz5s01f/58mc3mB84REhIiR0dHhYaG3vXeRx99pFq1at3VHhMTI5PJpAMHDljaDMPQ7NmzVb9+fRUoUEBFihSRv7+/pkyZ8sDL6yclJemdd95RsWLFVKBAAXXo0EGXLl267z6XLl3SK6+8Ii8vL7m7u6tly5Y6ceJEum0uXryobt26qWTJksqfP7/8/Pz03//+N8Pj3b59W7Vq1brrej/66CPL/4///cifP/8DXWtWoMjKQW7fvq25c+eqevXq6tKlizw8PCwPD2b1HQAAgMzz9vZWeHi4bt26ZWlLSkrSkiVLVLZs2bu2b9mypS5cuKCYmBj98MMPatKkifr37682bdooNTX1gTLMnz9f7777rubPn//A1yFJ3bp104ABA9S2bVtt2rRJBw4c0AcffKBvv/1WP/300wMdc+DAgfruu++0YsUKbdmyRefPn1f79u3vub1hGGrXrp1Onz6tb7/9Vvv371e5cuUUEBCghIQEy3bdu3dXVFSU1qxZo0OHDql9+/YKCgrS/v377zrmu+++Ky8vr7vahwwZogsXLqT7ePzxx9WpU6cHutaswG/lOcivv/6q119/XTVr1tSePXsUGRmpZ555xt6xAAAAchw/Pz95e3vrm2++sbR98803Klu2rGrXrn3X9q6uripZsqRKly4tPz8/jRgxQt9++61++OEHhYWFWX3+LVu26NatW/r4448VHx+vnTt3PtB1LF++XIsXL9bSpUs1YsQI1a1bVz4+Pmrbtq02btyoJk2aWH3MGzduaN68eZo0aZKaNm2qOnXqaMGCBdq5c6d2796d4T4nTpzQ7t279fnnn6tu3bqqWrWqPv/8c926dUtLly61bLdz50717dtX9erVU4UKFTRy5EgVKVJEe/fuTXe8H374QT/99JMmTJhw17kKFCigkiVLWj4uXbqk33//Xb169bL6WrMK92Q9wq5evarp06frl19+0dq1a/X000/r1KlTKl++vL2jAQAAZOhWcppOXbn5UMcwm81KSEhQ/r+MTM/UqVi8gPK5WPcMpFdffVULFizQSy+9JOnvkaWePXtq8+bNmdq/adOm8vX11TfffKPXXntN0t9TC2NiYv71GPPmzVPXrl3l7Oysrl27at68eWrYsKFV+SVp8eLFqlq1qtq2bXvXeyaTSYULF7Zs98Ybb9z3WD/88IMaN26svXv3KiUlRQEBAZb3qlWrprJly2rXrl166qmn7tr39u3bkv6eXXWHg4ODXF1dtX37dsvXp2HDhlq2bJmef/55FSlSRMuXL1dSUpKee+45y36XLl1S7969tXr16kw9g23u3LmqUqWKGjdu/K/bZheKrEfQuXPnNGnSJH355Zcym83q3bu3kpOT5erqSoEFAAAeaaeu3FSb6duz/bzf922kJ0oXtmqfl19+WcOHD1dsbKwkaceOHQoPD890kSX9XXwcPHjQ8rpUqVL/ep9WfHy8Vq5cqV27dllyNG7cWFOnTlWBAgWsuoYTJ06oatWq/7rdiy++qPr16993m9KlS0v6+74pFxcXFSlSJN37np6eunjxYob73inChg8fri+//FL58+fX5MmT9ccff+jChQuW7ZYvX67OnTurWLFicnJykru7u1atWqVKlSpJ+nva4SuvvKI333xT/v7+iomJuW/mpKQkLV68WMOGDfuXr0D2osh6xKSlpal+/fq6efOmBg4cqH79+ql48eL2jgUAAJApFYsX0Pd9Gz3UMSwjWfnzWzWSZa3ixYvr+eefV1hYmAzD0PPPPy8PDw+rjmEYRrrH5YSEhPzrPkuXLlXFihXl6+srSapVq5bKlSunZcuWWT3lzTCMTG1XsGBBFSxY0KpjW8PZ2VnffPONevXqpaJFi8rR0VEBAQFq1apVuowffPCBrl+/rvXr18vDw0OrV69WUFCQtm3bppo1a2r69On666+/NHz48Eydd9WqVfrrr7/Uo0ePrLq0B0KR9QjYv3+/JkyYoIkTJ6pkyZJasWKFatSooUKFCtk7GgAAgFXyuThaPaL0T2azWfHxJhUqVCjLF/Z69dVX1adPH0nSzJkzrd7/6NGjVs80mjdvno4cOSInp//7VdxsNmv+/PmWIqtQoUK6cePGXftev35dkizTAKtUqaJjx4796zmtmS5YsmRJJScn6/r16+lGsy5duqSSJUvec/86derowIEDunHjhpKTk1W8eHHVr19f/v7+kqRTp05pxowZOnz4sGrUqCFJ8vX11bZt2zRz5kx98cUX2rhxo3bt2iVXV9d0x/b399dLL72kr776Kl373Llz1aZNG3l6ev7r1yA7UWTZ0bZt2zRu3DhFRESofPnyiomJUcmSJdWgQQN7RwMAAMgTWrZsqeTkZJlMJgUGBlq178aNG3Xo0CENHDgw0/scOnRIv/76qzZv3qyiRYta2q9du6bnnntOx44dU7Vq1VS1alX98ccfunTpUroCYt++fXJzc7OsgBgcHKwuXbro22+/veu+LMMwFB8fr8KFC1s1XbBOnTpydnbWhg0b1KFDB0lSVFSUzpw5k6nfU+8UgCdOnNCvv/6qMWPGSJJlOfl/Fs6Ojo6WKZbTpk3TJ598Ynnv/PnzCgwM1LJly+7KHx0drU2bNmnNmjX/mim7UWTZyfvvv69x48apZs2aWrx4sYKCgtL9NQMAAABZz9HRUUePHrV8fi+3b9/WxYsXlZaWpkuXLikiIkIhISFq06aNunfvbtlu+PDhOnfunBYuXJjhcebNm6d69epluEJ03bp1NW/ePIWGhiowMFBVq1ZV165d9cknn6hkyZLat2+fRo4cqf79+1uyBgUFadWqVeratatGjhypFi1aqHjx4jp06JAmT56svn37ql27dlZNFyxcuLB69eqlQYMGqWjRoipUqJD69u2rBg0apFv0olq1agoJCdF//vMfSdKKFStUvHhxlS1bVocOHVL//v3Vrl07tWjRwrJ9pUqV9MYbb2jChAkqVqyYVq9ercjISH3//feSdNfy+XfuUatYsaLKlCmT7r358+erVKlSatWqVaauKzvxW302SU1N1YoVK+Th4aHmzZurc+fOatCggZ5//vl083gBAACQvTJzi0ZERIRKlSolJycnPfbYY/L19dW0adPUo0ePdCMzFy5c0JkzZzI8RnJysr7++mu99957Gb7foUMHTZw4UePGjZOzs7N++uknjRgxQl27dtWVK1dUvnx59e/fX4MGDbLsYzKZtGTJEs2ePVvz58/X2LFj5eTkpMqVK6t79+5Wj87dMXnyZDk4OKhDhw66ffu2AgMDNWvWrHTbREVFpZvSeOHCBQ0aNEiXLl1SqVKl1L17d33wwQeW952dnbVu3ToNGzZML7zwgm7evKlKlSrpq6++UuvWra3KZzabFRYWpldeeeW+xbG9mIzM3i2XS9wZMt12KFqNnvDJ8vMlJSXpq6++0meffabTp09rwIABmjx5cpafF/aXkpKidevWqXXr1nJ2drZ3HORi9DVkF/oa/ldSUpKio6NVvnz5dMt228Lf92TFZ8s9Wcj97tdXr169Kg8PD924ccOm6yEwkpWFfvvtN7Vq1UoXL15Ux44dtWLFCvn5+dk7FgAAAIAsxJ8GbCwuLk6rV6+WJFWtWlWdOnXSsWPHtHz5cgosAAAAIA+gyLKRs2fPqn///ipbtqx69uypmzdvys3NTVOnTlWVKlXsHQ8AAABANqHIekhms1mvvfaaKlSooEWLFmno0KE6ceKE1U/rBgAAAJA7cE/WA9q/f79q1qwpJycn5c+fX+PHj9frr7+epU/SBgAAeNTk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",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "roc_data = {'MD': {'scores': od_preds['data']['instance_score'], 'labels': y_outlier}}\n",
    "plot_roc(roc_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Include categorical variables\n",
    "\n",
    "So far we only tracked continuous variables. We can however also include categorical variables. The `fit` step first computes pairwise distances between the categories of each categorical variable. The pairwise distances are based on either the model predictions (*MVDM method*) or the context provided by the other variables in the dataset (*ABDM method*). For MVDM, we use the difference between the conditional model prediction probabilities of each category. This method is based on the Modified Value Difference Metric (MVDM) by [Cost et al (1993)](https://link.springer.com/article/10.1023/A:1022664626993). ABDM stands for Association-Based Distance Metric, a categorical distance measure introduced by [Le et al (2005)](http://www.jaist.ac.jp/~bao/papers/N26.pdf). ABDM infers context from the presence of other variables in the data and computes a dissimilarity measure based on the Kullback-Leibler divergence. Both methods can also be combined as ABDM-MVDM. We can then apply multidimensional scaling to project the pairwise distances into Euclidean space."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load and transform data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "cat_cols = ['protocol_type', 'service', 'flag']\n",
    "num_cols = ['srv_count', 'serror_rate', 'srv_serror_rate',\n",
    "            'rerror_rate', 'srv_rerror_rate', 'same_srv_rate', \n",
    "            'diff_srv_rate', 'srv_diff_host_rate', 'dst_host_count', \n",
    "            'dst_host_srv_count', 'dst_host_same_srv_rate', \n",
    "            'dst_host_diff_srv_rate', 'dst_host_same_src_port_rate',\n",
    "            'dst_host_srv_diff_host_rate', 'dst_host_serror_rate', \n",
    "            'dst_host_srv_serror_rate', 'dst_host_rerror_rate', \n",
    "            'dst_host_srv_rerror_rate']\n",
    "cols = cat_cols + num_cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(494021, 21) (494021,)\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(0)\n",
    "kddcup = fetch_kdd(keep_cols=cols, percent10=True)\n",
    "print(kddcup.data.shape, kddcup.target.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a dictionary with as keys the categorical columns and values the number of categories for each variable in the dataset. This dictionary will later be used in the `fit` step of the outlier detector."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0: 3, 1: 66, 2: 11}\n"
     ]
    }
   ],
   "source": [
    "cat_vars_ord = {}\n",
    "n_categories = len(cat_cols)\n",
    "for i in range(n_categories):\n",
    "    cat_vars_ord[i] = len(np.unique(kddcup.data[:, i]))\n",
    "print(cat_vars_ord)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fit an ordinal encoder on the categorical data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>OrdinalEncoder()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">OrdinalEncoder</label><div class=\"sk-toggleable__content\"><pre>OrdinalEncoder()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "OrdinalEncoder()"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "enc = OrdinalEncoder()\n",
    "enc.fit(kddcup.data[:, :n_categories])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Combine scaled numerical and ordinal features. `X_fit` will be used to infer distances between categorical features later. To make it easy, we will already transform the whole dataset, including the outliers that need to be detected later. This is for illustrative purposes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(494021, 21)\n"
     ]
    }
   ],
   "source": [
    "X_num = (kddcup.data[:, n_categories:] - mean) / stdev  # standardize numerical features\n",
    "X_ord = enc.transform(kddcup.data[:, :n_categories])  # apply ordinal encoding to categorical features\n",
    "X_fit = np.c_[X_ord, X_num].astype(np.float32, copy=False)  # combine numerical and categorical features\n",
    "print(X_fit.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Initialize and fit outlier detector\n",
    "\n",
    "We use the same threshold as for the continuous data. This will likely not result in optimal performance. Alternatively, you can infer the threshold again."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "n_components = 2\n",
    "std_clip = 3\n",
    "start_clip = 20\n",
    "    \n",
    "od = Mahalanobis(threshold,\n",
    "                 n_components=n_components, \n",
    "                 std_clip=std_clip, \n",
    "                 start_clip=start_clip,\n",
    "                 cat_vars=cat_vars_ord,\n",
    "                 ohe=False)  # True if one-hot encoding (OHE) is used"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set `fit` parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "d_type = 'abdm'  # pairwise distance type, 'abdm' infers context from other variables\n",
    "disc_perc = [25, 50, 75]  # percentiles used to bin numerical values; used in 'abdm' calculations\n",
    "standardize_cat_vars = True  # standardize numerical values of categorical variables"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Apply `fit` method to find numerical values for categorical variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "od.fit(X_fit,\n",
    "       d_type=d_type,\n",
    "       disc_perc=disc_perc,\n",
    "       standardize_cat_vars=standardize_cat_vars)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The numerical values for the categorical features are stored in the attribute `od.d_abs`. This is a dictionary with as keys the columns for the categorical features and as values the numerical equivalent of the category:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "cat = 0  # categorical variable to plot numerical values for"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABD+ElEQVR4nO3de3zP9f//8ft7Y+/N7IDNZlqGyZAoIlQrxnKMcurk8EEqJdHBPpVTByGHiKS+DqnkkETkrBxDQuV85oM5ZjOHYXv+/uiy98/bNvbW3ntbr9v1cnlfLns/X6fH+/V6v1+7v1+v5+v1thljjAAAACzIy9MFAAAAeApBCAAAWBZBCAAAWBZBCAAAWBZBCAAAWBZBCAAAWBZBCAAAWBZBCAAAWBZBCAAAWBZBCP+IzWZTv3793DLv/fv3y2azaeLEiW6Zf3Z++ukn2Ww2/fTTT3m63Jy6cuWKXn/9dUVGRsrLy0vNmzf3dEn/Wp54L0ycOFE2m0379+/Ps2X+m/Xr1082m81t8+/QoYOioqLcNv+bERUVpQ4dOrg8Xcb7fcaMGTcc91Z83TeLIORGGTs0X19fHT58ONPwhx56SHfeeacHKkN+Nn78eA0ZMkQtW7bUpEmT9Morr3i6pBybN2+e24Iz8saYMWPy/MsJrOHMmTN69tlnFRoaKn9/fz388MP67bff3L7cAm5fApSamqoPPvhAo0aN8nQpue7ChQsqUIC3UV5aunSpSpYsqeHDh3u6FJfNmzdPo0ePzjdh6MEHH9SFCxfk4+OTZ8t85pln1LZtW9nt9jxbpivGjBmjkJCQmzri4AlvvfWWevfu7eky8tSOHTvk5ZW/jnOkp6ercePG2rx5s1577TWFhIRozJgxeuihh7RhwwaVK1fObcvOX2sqn6patao+++wzHTlyxNOl5Ir09HRdvHhRkuTr60sQymPHjx9XcHBwrs3v6u2Jv128eFHp6eny8vKSr69vnv5T8fb2lq+vr1tP51jBuXPnJEkFChSQr6+vh6txP2OMLly4IEmy2+0qWLCghytyzYwZM7R69WpNnDhRffv2Vbdu3fTTTz/J29tbffv2deuyCUJ54L///a/S0tL0wQcfXHe86/WJubYvTsZ57507d+rpp59WUFCQQkND9fbbb8sYo0OHDunRRx9VYGCgwsPDNXTo0EzzTE1NVd++fRUdHS273a7IyEi9/vrrSk1NzbTsF198UV999ZUqVaoku92u+fPnZ1mXJB0+fFidOnVSRESE7Ha7Spcureeff16XLl2SJJ0+fVqvvvqqKleurMKFCyswMFANGzbU5s2bc7A2nf3666+y2WyaNGlSpmELFiyQzWbTDz/8IEk6cOCAXnjhBZUvX15+fn4qVqyYWrVqlaO+GNmdc3/ooYf00EMPObXldL0uWrRI999/v4KDg1W4cGGVL19e//3vf7OtIeP9sWzZMm3ZskU2m82p/8q5c+fUq1cvRUZGym63q3z58vrwww9ljHGaz/W2Z3Z+/PFHxcbGKiAgQIGBgbr33nv19ddfO4avWLFCrVq10u233+54za+88opjxyz93adg9OjRjhoyHhnS09M1YsQIVapUSb6+vgoLC1PXrl31119/OdWSnp6ufv36KSIiQoUKFdLDDz+srVu3ZrmN9u7dq1atWqlo0aIqVKiQ7rvvPs2dO9dpnIx+Ed98843eeustlSxZUoUKFVJycnK2fYTWrl2rRx55REFBQSpUqJBiY2O1atUqp3HOnj2rHj16KCoqSna7XcWLF1f9+vVveKg/qz5CUVFRatKkiVauXKkaNWrI19dXZcqU0RdffHHdeV29zj766CNVrlxZvr6+Cg0N1SOPPKJff/3VMc6ECRNUt25dFS9eXHa7XRUrVtQnn3ziNJ+oqCht2bJFP//8s2P7Xf3+P3PmjHr06OF4D0ZHR2vQoEFKT093ms+pU6f0zDPPKDAwUMHBwWrfvr02b96c5f5v6dKleuCBB+Tv76/g4GA9+uij2rZtm9M4GfvDrVu36sknn1SRIkV0//33Ow271pdffqkaNWqoUKFCKlKkiB588EEtXLjQMfz7779X48aNHfuxsmXL6p133lFaWlqO1vnVmjRpojJlymQ5rFatWqpevbrjeU62g/T/3xMLFixQ9erV5efnp08//dQx7OrPgqv73LS0NP33v/9VeHi4/P391axZMx06dOiGrzOnn+GszJgxQ2FhYXrsscccbaGhoWrdurW+//77TPvP3MRX+TxQunRptWvXTp999pl69+6tiIiIXJt3mzZtVKFCBX3wwQeaO3eu3n33XRUtWlSffvqp6tatq0GDBumrr77Sq6++qnvvvVcPPvigpL/fsM2aNdPKlSv17LPPqkKFCvrjjz80fPhw7dy5U7NmzXJaztKlSzVt2jS9+OKLCgkJybaT3JEjR1SjRg3Hud6YmBgdPnxYM2bM0Pnz5+Xj46O9e/dq1qxZatWqlUqXLq1jx47p008/VWxsrLZu3erS+qlevbrKlCmjadOmqX379k7Dpk6dqiJFiig+Pl6StH79eq1evVpt27bVbbfdpv379+uTTz7RQw89pK1bt6pQoUI5X/HZyOl63bJli5o0aaK77rpLAwYMkN1u1+7duzP9M71aaGioJk+erPfee08pKSkaOHCgJKlChQoyxqhZs2ZatmyZOnXqpKpVq2rBggV67bXXdPjw4Uyn0XK6PaW//zH/5z//UaVKlZSQkKDg4GBt3LhR8+fP15NPPilJmj59us6fP6/nn39exYoV07p16zRq1Cj973//0/Tp0yVJXbt21ZEjR7Ro0SJNnjw503K6du2qiRMnqmPHjurevbv27dunjz/+WBs3btSqVasc33ATEhI0ePBgNW3aVPHx8dq8ebPi4+MzHdU6duyYateurfPnz6t79+4qVqyYJk2apGbNmmnGjBlq0aKF0/jvvPOOfHx89Oqrryo1NTXb02FLly5Vw4YNVa1aNfXt21deXl6Of14rVqxQjRo1JEnPPfecZsyYoRdffFEVK1bUqVOntHLlSm3btk333HNPtus7O7t371bLli3VqVMntW/fXuPHj1eHDh1UrVo1VapU6brTdurUSRMnTlTDhg3VuXNnXblyRStWrNAvv/zi+Cf8ySefqFKlSmrWrJkKFCigOXPm6IUXXlB6erq6desmSRoxYoReeuklFS5cWG+++aYkKSwsTJJ0/vx5xcbG6vDhw+ratatuv/12rV69WgkJCTp69KhGjBgh6e/PSNOmTbVu3To9//zziomJ0ffff5/p8ytJixcvVsOGDVWmTBn169dPFy5c0KhRo1SnTh399ttvmd63rVq1Urly5fT+++9n+gJwtf79+6tfv36qXbu2BgwYIB8fH61du1ZLly5VgwYNJP39vi9cuLB69uypwoULa+nSperTp4+Sk5M1ZMiQG2+wq7Rp00bt2rXT+vXrde+99zraDxw4oF9++cVpfjnZDhl27NihJ554Ql27dlWXLl1Uvnz5LJfv6j73vffek81m0xtvvKHjx49rxIgRiouL06ZNm+Tn55ft68zpZzgrGzdu1D333JPp6GuNGjU0btw47dy5U5UrV852+n/EwG0mTJhgJJn169ebPXv2mAIFCpju3bs7hsfGxppKlSo5nu/bt89IMhMmTMg0L0mmb9++jud9+/Y1ksyzzz7raLty5Yq57bbbjM1mMx988IGj/a+//jJ+fn6mffv2jrbJkycbLy8vs2LFCqfljB071kgyq1atclq2l5eX2bJlyw3rateunfHy8jLr16/PNG56eroxxpiLFy+atLQ0p2H79u0zdrvdDBgwIEfr42oJCQmmYMGC5vTp04621NRUExwcbP7zn/842s6fP59p2jVr1hhJ5osvvnC0LVu2zEgyy5Ytc7SVKlXKaf1liI2NNbGxsY7nOV2vw4cPN5LMiRMnrvvasnLt+8YYY2bNmmUkmXfffdepvWXLlsZms5ndu3c72q63Pa915swZExAQYGrWrGkuXLjgNCxjexqT9bodOHCgsdls5sCBA462bt26max2OytWrDCSzFdffeXUPn/+fKf2xMREU6BAAdO8eXOn8fr162ckOW2jHj16GElO2+Ls2bOmdOnSJioqyvEezNjeZcqUyfQ6rn0vpKenm3Llypn4+PhMr7906dKmfv36jragoCDTrVu3TK/1RjL2G/v27XO0lSpVykgyy5cvd7QdP37c2O1206tXr+vOb+nSpUaS074nw422YXx8vClTpoxTW6VKlZze8xneeecd4+/vb3bu3OnU3rt3b+Pt7W0OHjxojDHm22+/NZLMiBEjHOOkpaWZunXrZvq8V61a1RQvXtycOnXK0bZ582bj5eVl2rVr52jL2B8+8cQTmerKGJZh165dxsvLy7Ro0SLTfuhG66Nr166mUKFC5uLFi4629u3bm1KlSmUa92pJSUlZbqvBgwdn+ozkdDtkvCfmz5+fafxr91c53edmvN9LlixpkpOTHe3Tpk0zksxHH32U7evO6Wc4O/7+/k776wxz587N9nXmFk6N5ZEyZcromWee0bhx43T06NFcm2/nzp0df3t7e6t69eoyxqhTp06O9uDgYJUvX1579+51tE2fPl0VKlRQTEyMTp486XjUrVtXkrRs2TKn5cTGxqpixYrXrSU9PV2zZs1S06ZNnQ71Zsg4PG232x2pPy0tTadOnXKcGrqZKwTatGmjy5cva+bMmY62hQsX6syZM2rTpo2j7epvMpcvX9apU6cUHR2t4ODgXLsyIafrNaOPz/fff5/ptMHNmDdvnry9vdW9e3en9l69eskYox9//NGpPSfbU/r79N3Zs2fVu3fvTP0srj7dcPW6PXfunE6ePKnatWvLGKONGzfecDnTp09XUFCQ6tev77TeqlWrpsKFCzvW25IlS3TlyhW98MILTtO/9NJLmeY5b9481ahRw3GKRJIKFy6sZ599Vvv379fWrVudxm/fvv11v+1K0qZNm7Rr1y49+eSTOnXqlKPOc+fOqV69elq+fLljewYHB2vt2rW51jewYsWKeuCBBxzPQ0NDM32us/Ltt9/KZrNl2c8iu22YlJSkkydPKjY2Vnv37lVSUtIN65s+fboeeOABFSlSxGkbxsXFKS0tTcuXL5ckzZ8/XwULFlSXLl0c03p5eWU62nH06FFt2rRJHTp0UNGiRR3td911l+rXr6958+ZlquG55567YZ2zZs1Senq6+vTpk+noQ3br4+zZszp58qQeeOABnT9/Xtu3b7/hcq6WcSpq2rRpTkeqpk6dqvvuu0+33357lsu90XYoXbq044j39bi6z23Xrp0CAgIcz1u2bKkSJUpkuc4z5PQznJ0LFy5keYFAxn7n6tPsuY0glIfeeustXbly5YZ9hVxx9QdIkoKCguTr66uQkJBM7Vefp921a5e2bNmi0NBQp8cdd9wh6e8OuVcrXbr0DWs5ceKEkpOTb3hLgPT0dA0fPlzlypWT3W5XSEiIQkND9fvvv+doh3utKlWqKCYmRlOnTnW0TZ06VSEhIY4AIv39QerTp4+j/0LGcs+cOXNTy81KTtdrmzZtVKdOHXXu3FlhYWFq27atpk2bdtOh6MCBA4qIiHDaeUl/nzbLGH61nGxPSdqzZ48k3XCbHjx40PEPq3DhwgoNDVVsbKwk5Wjd7tq1S0lJSSpevHimdZeSkuJYbxmvIzo62mn6okWLqkiRIk5tBw4cyPJUwT9ZJ7t27ZL0d2i6ts7PP/9cqampjtc7ePBg/fnnn4qMjFSNGjXUr1+/G4aW67n2sy5JRYoUuWH/iz179igiIsIpTGRl1apViouLc/TFCQ0NdfRZy+k2nD9/fqb1EhcXJ0lO27BEiRKZTkVfu00ztk922zAjgF4tJ9twz5498vLyuuEXgS1btqhFixYKCgpSYGCgQkND9fTTT0vK2fq4Vps2bXTo0CGtWbPGUceGDRucvqxJrm2HnH6OXd3nXnuFls1mU3R09HX7U+b0M5wdPz+/LPsBZZzyvtGXlH+CPkJ5qEyZMnr66ac1bty4LC/nzO4qket1zvP29s5RmySnbyLp6emqXLmyhg0bluW4kZGRTs9z8034/vvv6+2339Z//vMfvfPOOypatKi8vLzUo0ePmw4Cbdq00XvvvaeTJ08qICBAs2fP1hNPPOF0RdtLL72kCRMmqEePHqpVq5aCgoJks9nUtm3bGy73etvm6vWd0/Xq5+en5cuXa9myZZo7d67mz5+vqVOnqm7dulq4cGG22zC35Ob2TEtLU/369XX69Gm98cYbiomJkb+/vw4fPqwOHTrkaJump6erePHi+uqrr7IcHhoammv1Zicn6yTjtQwZMkRVq1bNcpzChQtLklq3bq0HHnhA3333nRYuXKghQ4Zo0KBBmjlzpho2bOhyfTn5XN+sPXv2qF69eoqJidGwYcMUGRkpHx8fzZs3T8OHD8/xNqxfv75ef/31LIdnfBlwp9x6X585c0axsbEKDAzUgAEDVLZsWfn6+uq3337TG2+8cVP7qaZNm6pQoUKaNm2aateurWnTpsnLy0utWrVyjOPqdsjp63XHPvda//QzXKJEiSzPlmS05Wbf2msRhPLYW2+9pS+//FKDBg3KNCzjG+2ZM2ec2q/95pobypYtq82bN6tevXq5dpluaGioAgMD9eeff153vBkzZujhhx/W//3f/zm1nzlzJtORrJxq06aN+vfvr2+//VZhYWFKTk5W27ZtMy23ffv2TlfQXbx4MdP6zkqRIkWyHO/AgQNOV4O4sl69vLxUr1491atXT8OGDdP777+vN998U8uWLXN8i86pUqVKafHixTp79qzTUaGMQ/ilSpVyaX4ZypYtK0n6888/M31jz/DHH39o586dmjRpktq1a+doX7RoUaZxs1snZcuW1eLFi1WnTp3r7twzXsfu3budvg2fOnUq05GRUqVKaceOHZnm8U/WScb6CAwMzNE2KlGihF544QW98MILOn78uO655x699957NxWEblbZsmW1YMECnT59OtujQnPmzFFqaqpmz57tdOQpq9MZ19uGKSkpN1wvpUqV0rJly3T+/Hmno0K7d+/ONJ6kbLdhSEiI/P39r7us7OpMT0/X1q1bsw2zP/30k06dOqWZM2c6LjCRpH379rm8vAz+/v5q0qSJpk+frmHDhmnq1Kl64IEHnP7Bu7IdXOHqPjfjyGcGY4x2796tu+66K9tl5PQznJ2qVatqxYoVjttWZFi7dq0KFSrk1iDNqbE8VrZsWT399NP69NNPlZiY6DQsMDBQISEhjnPpGcaMGZPrdbRu3VqHDx/WZ599lmnYhQsXMh1yzomMn3uYM2eO02W5GTK+uXp7e2f6Fjt9+vQs776dUxUqVFDlypU1depUTZ06VSVKlHDagWW33FGjRuXoctiyZcvql19+cdwCQJJ++OGHTJeU5nS9nj59OtPwjJ3yzVwm2qhRI6Wlpenjjz92ah8+fLhsNttN/+Nt0KCBAgICNHDgwExXZV29Pa9+nvH3Rx99lGl+Gf+4rg2VrVu3Vlpamt55551M01y5csUxfr169VSgQIFMlxNf+7qlv9fJunXrHKcipL/7L40bN05RUVE56iN1rWrVqqls2bL68MMPlZKSkmn4iRMnJP19lOzaUw7FixdXRESEWy8Dzsrjjz8uY4z69++fadj1tmFSUpImTJiQaRp/f/8svxS0bt1aa9as0YIFCzINO3PmjK5cuSJJio+P1+XLl50+I+np6Y5bK2QoUaKEqlatqkmTJjkt788//9TChQvVqFGj67zq7DVv3lxeXl4aMGBApqMh11sfly5d+sf74jZt2ujIkSP6/PPPtXnz5kynxVzZDq5wdZ/7xRdf6OzZs47nM2bM0NGjR6+7H8npZzg7LVu21LFjx5z6ep48eVLTp09X06ZN3XqDUY4IecCbb76pyZMna8eOHZkue+3cubM++OADde7cWdWrV9fy5cu1c+fOXK/hmWee0bRp0/Tcc89p2bJlqlOnjtLS0rR9+3ZNmzbNcW8KV73//vtauHChYmNjHZePHz16VNOnT9fKlSsVHBysJk2aaMCAAerYsaNq166tP/74Q1999VW299nIqTZt2qhPnz7y9fVVp06dMnWEbNKkiSZPnqygoCBVrFhRa9as0eLFi1WsWLEbzrtz586aMWOGHnnkEbVu3Vp79uzRl19+6ThCkCGn63XAgAFavny5GjdurFKlSun48eMaM2aMbrvtNqfOvTnVtGlTPfzww3rzzTe1f/9+ValSRQsXLtT333+vHj16ZKozpwIDAzV8+HB17txZ9957r+MeLZs3b9b58+c1adIkxcTEqGzZsnr11Vd1+PBhBQYG6ttvv82y70q1atUkSd27d1d8fLy8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zZppwIABunz5siTJZrPp4MGDeuONN/T444/neoEAAADu4nIQGjp0qFJSUlS8eHFduHBBsbGxio6OVkBAgN577z131AgAAOAWLl81FhQUpEWLFmnlypX6/ffflZKSonvuuUdxcXHuqA8AAMBtXA5CGe6//37df//9uVkLAABAnnI5CA0YMOC6w/v06XPTxQAAAOQll4PQd9995/T88uXL2rdvnwoUKKCyZcsShAAAQL7hchDauHFjprbk5GR16NBBLVq0yJWiAAAA8kKu/OhqYGCg+vfvr7fffjs3ZgcAAJAncu3X55OSkpSUlJRbswMAAHA7l0+NjRw50um5MUZHjx7V5MmT1bBhw1wrDAAAwN1cDkLDhw93eu7l5aXQ0FC1b99eCQkJuVYYAACAu7kchPbt2+eOOgAAAPJcrvURAgAAyG9ydETosccey/EMZ86cedPFAAAA5KUcBaGgoCB31wEAAJDnchSEJkyY4O46AAAA8hx9hAAAgGXd1K/Pz5gxQ9OmTdPBgwd16dIlp2G//fZbrhQGAADgbi4fERo5cqQ6duyosLAwbdy4UTVq1FCxYsW0d+9ebqgIAADyFZeD0JgxYzRu3DiNGjVKPj4+ev3117Vo0SJ1796dn9gAAAD5istB6ODBg6pdu7Ykyc/PT2fPnpUkPfPMM5oyZUruVgcAAOBGLgeh8PBwnT59WpJ0++2365dffpH09x2njTG5Wx0AAIAbuRyE6tatq9mzZ0uSOnbsqFdeeUX169dXmzZt1KJFi1wvEAAAwF1cvmps3LhxSk9PlyR169ZNxYoV0+rVq9WsWTN17do11wsEAABwF5eDkJeXl7y8/v+BpLZt26pt27a5WhQAAEBecPnUWHR0tPr166edO3e6ox4AAIA843IQ6tatm+bOnasKFSro3nvv1UcffaTExER31AYAAOBWLgehV155RevXr9e2bdvUqFEjjR49WpGRkWrQoIG++OILd9QIAADgFjf9W2N33HGH+vfvr507d2rFihU6ceKEOnbsmJu1AQAAuNVN/dZYhnXr1unrr7/W1KlTlZycrFatWuVWXQAAAG7nchDauXOnvvrqK02ZMkX79u1T3bp1NWjQID322GMqXLiwO2oEAABwC5eDUExMjO69915169ZNbdu2VVhYmDvqAgAAcDuXg9COHTtUrlw5d9QCAACQp1zuLE0I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lCIiIvT777/rjTfe0I4dO65708eBAweqf//+uVY7AAC4dXk0CPXu3VuDBg267jjbtm276fk/++yzjr8rV66sEiVKqF69etqzZ4/Kli2b5TQJCQnq2bOn43lycrIiIyNvugYAAHDr8mgQ6tWrlzp06HDdccqUKaPw8HAdP37cqf3KlSs6ffq0S/1/atasKUnavXt3tkHIbrfLbrfneJ4AACD/8mgQCg0NVWho6A3Hq1Wrls6cOaMNGzaoWrVqkqSlS5cqPT3dEW5yYtOmTZKkEiVK3FS9AADg3yVfdJauUKGCHnnkEXXp0kXr1q3TqlWr9OKLL6pt27aOK8YOHz6smJgYrVu3TpK0Z88evfPOO9qwYYP279+v2bNnq127dnrwwQd11113efLlAACAW0S+CELS31d/xcTEqF69emrUqJHuv/9+jRs3zjH88uXL2rFjh+OqMB8fHy1evFgNGjRQTEyMevXqpccff1xz5szx1EsAAAC3mHxx1ZgkFS1a9Lo3T4yKipIxxvE8MjJSP//8c16UBgAA8ql8c0QIAAAgtxGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZRGEAACAZeWbIPTee++pdu3aKlSokIKDg3M0jTFGffr0UYkSJeTn56e4uDjt2rXLvYUCAIB8I98EoUuXLqlVq1Z6/vnnczzN4MGDNXLkSI0dO1Zr166Vv7+/4uPjdfHiRTdWCgAA8osCni4gp/r37y9JmjhxYo7GN8ZoxIgReuutt/Too49Kkr744guFhYVp1qxZatu2rbtKBQAA+US+OSLkqn379ikxMVFxcXGOtqCgINWsWVNr1qzJdrrU1FQlJyc7PQAAwL/TvzYIJSYmSpLCwsKc2sPCwhzDsjJw4EAFBQU5HpGRkW6tEwAAeI5Hg1Dv3r1ls9mu+9i+fXue1pSQkKCkpCTH49ChQ3m6fAAAkHc82keoV69e6tChw3XHKVOmzE3NOzw8XJJ07NgxlShRwtF+7NgxVa1aNdvp7Ha77Hb7TS0TAADkLx4NQqGhoQoNDXXLvEuXLq3w8HAtWbLEEXySk5O1du1al648AwAA/175po/QwYMHtWnTJh08eFBpaWnatGmTNm3apJSUFMc4MTEx+u677yRJNptNPXr00LvvvqvZs2frjz/+ULt27RQREaHmzZt76FUAAIBbSb65fL5Pnz6aNGmS4/ndd98tSVq2bJkeeughSdKOHTuUlJTkGOf111/XuXPn9Oyzz+rMmTO6//77NX/+fPn6+uZp7QAA4NZkM8YYTxdxK0tOTlZQUJCSkpIUGBiYq/OO6j03V+eH/Gf/B409XQIA/Cvl9P93vjk1BgAAkNsIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIIQgAAwLIKeLoAK9v/QWNPlwAAgKVxRAgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFgWQQgAAFhWAU8XcKszxkiSkpOTPVwJAADIqYz/2xn/x7NDELqBs2fPSpIiIyM9XAkAAHDV2bNnFRQUlO1wm7lRVLK49PR0HTlyRAEBAbLZbJ4u518lOTlZkZGROnTokAIDAz1dDiyI9yA8jfeg+xhjdPbsWUVERMjLK/ueQBwRugEvLy/ddtttni7jXy0wMJAdADyK9yA8jfege1zvSFAGOksDAADLIggBAADLIgjBY+x2u/r27Su73e7pUmBRvAfhabwHPY/O0gAAwLI4IgQAACyLIAQAACyLIAQAACyLIAQAACyLIASPGD16tKKiouTr66uaNWtq3bp1ni4JFrJ8+XI1bdpUERERstlsmjVrlqdLgsUMHDhQ9957rwICAlS8eHE1b95cO3bs8HRZlkQQQp6bOnWqevbsqb59++q3335TlSpVFB8fr+PHj3u6NFjEuXPnVKVKFY0ePdrTpcCifv75Z3Xr1k2//PKLFi1apMuXL6tBgwY6d+6cp0uzHC6fR56rWbOm7r33Xn388ceS/v49t8jISL300kvq3bu3h6uD1dhsNn333Xdq3ry5p0uBhZ04cULFixfXzz//rAcffNDT5VgKR4SQpy5duqQNGzYoLi7O0ebl5aW4uDitWbPGg5UBgOckJSVJkooWLerhSqyHIIQ8dfLkSaWlpSksLMypPSwsTImJiR6qCgA8Jz09XT169FCdOnV05513erocy+HX5wEA8KBu3brpzz//1MqVKz1diiURhJCnQkJC5O3trWPHjjm1Hzt2TOHh4R6qCgA848UXX9QPP/yg5cuX67bbbvN0OZbEqTHkKR8fH1WrVk1LlixxtKWnp2vJkiWqVauWBysDgLxjjNGLL76o7777TkuXLlXp0qU9XZJlcUQIea5nz55q3769qlevrho1amjEiBE6d+6cOnbs6OnSYBEpKSnavXu34/m+ffu0adMmFS1aVLfffrsHK4NVdOvWTV9//bW+//57BQQEOPpIBgUFyc/Pz8PVWQuXz8MjPv74Yw0ZMkSJiYmqWrWqRo4cqZo1a3q6LFjETz/9pIcffjhTe/v27TVx4sS8LwiWY7PZsmyfMGGCOnTokLfFWBxBCAAAWBZ9hAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhADcMhITE/XSSy+pTJkystvtioyMVNOmTZ1+m+56Jk6cqODgYPcWCeBfhd8aA3BL2L9/v+rUqaPg4GANGTJElStX1uXLl7VgwQJ169ZN27dv93SJLrt8+bIKFizo6TIAXAdHhADcEl544QXZbDatW7dOjz/+uO644w5VqlRJPXv21C+//CJJGjZsmCpXrix/f39FRkbqhRdeUEpKiqS/fz+sY8eOSkpKks1mk81mU79+/SRJqampevXVV1WyZEn5+/urZs2a+umnn5yW/9lnnykyMlKFChVSixYtNGzYsExHlz755BOVLVtWPj4+Kl++vCZPnuw03Gaz6ZNPPlGzZs3k7++vd999V9HR0frwww+dxtu0aZNsNpvTD78C8BADAB526tQpY7PZzPvvv3/d8YYPH26WLl1q9u3bZ5YsWWLKly9vnn/+eWOMMampqWbEiBEmMDDQHD161Bw9etScPXvWGGNM586dTe3atc3y5cvN7t27zZAhQ4zdbjc7d+40xhizcuVK4+XlZYYMGWJ27NhhRo8ebYoWLWqCgoIcy545c6YpWLCgGT16tNmxY4cZOnSo8fb2NkuXLnWMI8kUL17cjB8/3uzZs8ccOHDAvPfee6ZixYpOr6N79+7mwQcfzI1VB+AfIggB8Li1a9caSWbmzJkuTTd9+nRTrFgxx/MJEyY4hRdjjDlw4IDx9vY2hw8fdmqvV6+eSUhIMMYY06ZNG9O4cWOn4U899ZTTvGrXrm26dOniNE6rVq1Mo0aNHM8lmR49ejiNc/jwYePt7W3Wrl1rjDHm0qVLJiQkxEycONGl1wrAPTg1BsDjjDE5Gm/x4sWqV6+eSpYsqYCAAD3zzDM6deqUzp8/n+00f/zxh9LS0nTHHXeocOHCjsfPP/+sPXv2SJJ27NihGjVqOE137fNt27apTp06Tm116tTRtm3bnNqqV6/u9DwiIkKNGzfW+PHjJUlz5sxRamqqWrVqlaPXDMC96CwNwOPKlSsnm8123Q7R+/fvV5MmTfT888/rvffeU9GiRbVy5Up16tRJly5dUqFChbKcLiUlRd7e3tqwYYO8vb2dhhUuXDhXX4ck+fv7Z2rr3LmznnnmGQ0fPlwTJkxQmzZtsq0XQN7iiBAAjytatKji4+M1evRonTt3LtPwM2fOaMOGDUpPT9fQoUN133336Y477tCRI0ecxvPx8VFaWppT29133620tDQdP35c0dHRTo/w8HBJUvny5bV+/Xqn6a59XqFCBa1atcqpbdWqVapYseINX1+jRo3k7++vTz75RPPnz9d//vOfG04DIG8QhADcEkaPHq20tDTVqFFD3377rXbt2qVt27Zp5MiRqlWrlqKjo3X58mWNGjVKe/fu1eTJkzV27FineURFRSklJUVLlizRyZMndf78ed1xxx166qmn1K5dO82cOVP79u3TunXrNHDgQM2dO1eS9NJLL2nevHkaNmyYdu3apU8//VQ//vijbDabY96vvfaaJk6cqE8++US7du3SsGHDNHPmTL366qs3fG3e3t7q0KGDEhISVK5cOdWqVSt3Vx6Am+fpTkoAkOHIkSOmW7duplSpUsbHx8eULFnSNGvWzCxbtswYY8ywYcNMiRIljJ+fn4mPjzdffPGFkWT++usvxzyee+45U6xYMSPJ9O3b1xjzdwflPn36mKioKFOwYEFTokQJ06JFC/P77787phs3bpwpWbKk8fPzM82bNzfvvvuuCQ8Pd6pvzJgxpkyZMqZgwYLmjjvuMF988YXTcEnmu+++y/K17dmzx0gygwcP/sfrCUDusRmTw16KAGAhXbp00fbt27VixYpcmd+KFStUr149HTp0SGFhYbkyTwD/HJ2lAUDShx9+qPr168vf318//vijJk2apDFjxvzj+aampurEiRPq16+fWrVqRQgCbjH0EQIASevWrVP9+vVVuXJljR07ViNHjlTnzp3/8XynTJmiUqVK6cyZMxo8eHAuVAogN3FqDAAAWBZHhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGX9P2XuvPjS1Ya3AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(np.arange(len(od.d_abs[cat])), od.d_abs[cat])\n",
    "plt.xticks(np.arange(len(od.d_abs[cat])))\n",
    "plt.title('Numerical values for categories in categorical variable {}'.format(cat))\n",
    "plt.xlabel('Category')\n",
    "plt.ylabel('Numerical value')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Another option would be to set `d_type` to `'mvdm'` and `y` to `kddcup.target` to infer the numerical values for categorical variables from the model labels (or alternatively the predictions)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Run outlier detector and display results\n",
    "\n",
    "Generate batch of data with 10% outliers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000, 21) (1000,)\n",
      "10.0% outliers\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "outlier_batch = create_outlier_batch(kddcup.data, kddcup.target, n_samples=1000, perc_outlier=10)\n",
    "data, y_outlier = outlier_batch.data, outlier_batch.target\n",
    "print(data.shape, y_outlier.shape)\n",
    "print('{}% outliers'.format(100 * y_outlier.mean()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Preprocess the outlier batch:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000, 21)\n"
     ]
    }
   ],
   "source": [
    "X_num = (data[:, n_categories:] - mean) / stdev\n",
    "X_ord = enc.transform(data[:, :n_categories])\n",
    "X_outlier = np.c_[X_ord, X_num].astype(np.float32, copy=False)\n",
    "print(X_outlier.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Predict outliers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "od_preds = od.predict(X_outlier, return_instance_score=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "F1 score and confusion matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "F1 score: 0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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nFFRUZHjF7XzXgUBAQEqKyur1HM7duyo9957T02bNr2qFQyApzGscB2Ki4tTbGyshg4dqm3btmnz5s0aPny47rjjDnXu3Nntz2vVqpVjUuOOHTv0xz/+sVIVDMDdgoODNXr0aE2ePFmrVq3Snj17NHLkSJ09e1ZJSUnq2rWrgoKC9Nhjj+nQoUNaunTpJasRmjZtqqysLG3fvl2nTp2SzWa74nOTk5OVl5ene++9V1u2bNGhQ4e0evVq/elPf6p0ogF4EsnBdchkMum///2v6tWrp9/85jeKi4tT8+bN9fbbb1fJ82bNmqV69erptttuU79+/RQfH6+OHTtWybOAinr++eeVmJioYcOGqWPHjjp48KBWr16tevXqKTw8XEuWLNH//vc/xcbGatmyZYalwJKUmJiou+66Sz169FBERISWLVt2xWdGR0drw4YNKisrU+/evRUbG6tx48YpLCxMPj78uMW1g1c2AwAAA1JZAABgQHIAAAAMSA4AAIAByQEAADAgOQAAAAYkBwAAwIDkAAAAGJAcAAAAA5IDAABgQHIAAAAMSA4AAIAByQEAADD4/00WFlgPOKL6AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = od_preds['data']['is_outlier']\n",
    "f1 = f1_score(y_outlier, y_pred)\n",
    "print('F1 score: {}'.format(f1))\n",
    "cm = confusion_matrix(y_outlier, y_pred)\n",
    "df_cm = pd.DataFrame(cm, index=labels, columns=labels)\n",
    "sns.heatmap(df_cm, annot=True, cbar=True, linewidths=.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot instance level outlier scores vs. the outlier threshold:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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jLNjTkx2iIiIGh7Oek5EREQEJjtERERk5ZjsEBERkVVjskNERERWjckOERERWTUmO0RERGTVmOwQERGRVWOyQ0RERFaNyQ4RERFZNSY7REREZNWY7BAREZFVY7JDREREVo3JDhEREVk1JjtERERk1ZjsEBERkVVjskNERERWjckOERERWTUmO0RERGTVmOwQERGRVWOyQ0RERFaNyQ4RERFZNSY7REREZNWY7BAREZFVY7JDREREVo3JDhEREVk1JjtERERk1WzNHQAR6aBSAtePAvlZgKsP0LIXILUxd1RERA0Skx0iS5O6C4idAyhuP1om8wcGLgdChpkvLiKiBorVWESWJHUX8P047UQHABQZ6uWpu8wTFxFRA8Zkh8hSqJTqEh0IOlY+XBY7V70dERHpjckOkaW4frRqiY4WAVDcUm9HRER6Y7JDZCnys8TdjoiIADDZIbIcrj7ibkdERACY7BBZjpa91L2uIKlmAwkga6bejoiI9GZUslNWVobffvsNn3/+Oe7fvw8AuH37NvLz80UNjqhRkdqou5cDqJrwPHw+cBnH2yEiMpDByc7169cRFhaG4cOHIzo6Gnfu3AEALF++HG+++aboARI1KiHDgFGbAJmf9nKZv3o5x9khIjKYwYMKTp8+Hd26dUNycjI8PT01y5999llMmjRJ1OCIGqWQYUDwEI6gTEQkEoOTncOHD+Po0aOwt7fXWh4YGIhbt26JFhhRoya1AYKeNHcURERWweBqLJVKBaWy6qBmf/75J9zc3EQJioiIiEgsBic7AwYMwMqVKzXPJRIJ8vPzsWDBAgwePNigfR06dAhDhw6Fv78/JBIJdu7cqbVeEAS888478PPzg5OTEyIiInDp0iWtbXJychAVFQWZTAZ3d3dMnDiRDaWJiIhIw+Bk54MPPkBCQgJCQkJQVFSEf/zjH5oqrOXLl9e+gwoKCgrQsWNHrFmzRuf6FStWYPXq1Vi3bh2OHTsGFxcXREZGoqioSLNNVFQUzp07h7i4OOzZsweHDh3C5MmTDT0tIiIislISQRB0TcRTo7KyMnz33XdITk5Gfn4+unTpgqioKDg5ORkfiESCHTt2YMSIEQDUpTr+/v6YOXOmppdXXl4efHx8sGHDBowePRrnz59HSEgITpw4gW7dugEAYmNjMXjwYPz555/w9/fXeazi4mIUFxdrnisU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Dzg2qf31x9YCVw9abdsdi67GcnNzQ2hoqNYyFxcXeHp6apZPnDgRM2bMgIeHB2QyGaZOnYrw8PBqe2IRERFZpcojM5f35jr0AXBgSc2vffAXsGmY1U4gatHJjj4+/vhjSKVSjBw5EsXFxYiMjMRnn31m7rCIiIjqn67Z1j1b6f/68glEG3B3dF0axDg7pqZvP30iIqIGJ/2wehBBvT2cniLmbO1d383MqsbZISIiIiNpRlrWt/Gy9XVHZ7JDRERkzYztrWVF3dGZ7BAREVm76npr1UTfiUYbACY7REREjUHIMCAmBRj7E+BUU3d0CSBrpq7+shJMdoiIiBoLqQ3Qqh8wdDXUVVqVq7UePh+4zOIbJxuCyQ4REVFjU121lszf6rqdA1Ywzg4REREZobpBCK2oRKcckx0iIqLGStcghFaI1VhERERk1ZjsEBERkVVjskNERERWjckOERERWTUmO0RERGTVmOwQERGRVWOyQ0RERFaNyQ4RERFZNSY7REREZNWY7BAREZFVY7JDREREVo3JDhEREVk1JjtERERk1ZjsEBERkVVjskNERERWjckOERERWTUmO0RERGTVmOwQERGRVWOyQ0RERFaNyQ4RERFZNSY7REREZNWY7BAREZFVY7JDREREVo3JDhEREVk1JjtERERk1ZjsEBERkVVjskNERERWjckOERERWTUmO0RERGTVmOwQERGRVbPoZGfp0qXo3r073Nzc4O3tjREjRiAtLU1rm6KiIkRHR8PT0xOurq4YOXIksrKyzBQxERERWRqLTnYOHjyI6Oho/P7774iLi0NpaSkGDBiAgoICzTZvvPEGdu/ejR9++AEHDx7E7du38dxzz5kxaiIiIrIkEkEQBHMHoa87d+7A29sbBw8eRN++fZGXlwcvLy9s2bIFzz//PADgwoULaNeuHRITE/HEE0/o3E9xcTGKi4s1zxUKBQICApCXlweZTFYv50JERER1o1AoIJfLa71/W3TJTmV5eXkAAA8PDwDAqVOnUFpaioiICM02wcHBaNGiBRITE6vdz9KlSyGXyzWPgIAA0wZOREREZtNgkh2VSoWYmBj07t0boaGhAIDMzEzY29vD3d1da1sfHx9kZmZWu6958+YhLy9P87h586YpQyciIiIzsjV3APqKjo5GSkoKjhw5Uud9OTg4wMHBQYSoiIiIyNI1iJKdKVOmYM+ePdi/fz+aN2+uWe7r64uSkhLk5uZqbZ+VlQVfX996jpKIiIgskUUnO4IgYMqUKdixYwf27duHoKAgrfVdu3aFnZ0d4uPjNcvS0tJw48YNhIeH13e4lkelBNIPA2d/VP+rUpo7IiL98fNLRCKx6Gqs6OhobNmyBT/99BPc3Nw07XDkcjmcnJwgl8sxceJEzJgxAx4eHpDJZJg6dSrCw8Or7YnVaKTuAmLnAIrbj5bJ/IGBy4GQYeaLi0gf/PwSkYgsuuu5RCLRufzrr7/GSy+9BEA9qODMmTOxdetWFBcXIzIyEp999plB1Vj6dl1rMFJ3Ad+PA1D5rX14PUdt4g2DLFe1n18AkPDzS0Qa+t6/LTrZqS9WleyolMDKUO2/iCtzbgoMXAq4+QEtewFSm/qLr7FQKYHrR4H8LMDVR/s617SusdPn8ytrBsScrfma8RoTNQr63r8tuhqLjHD9aM03CgAovAtsn6T+P6sGDKPPTbSmKhjA/NUzlpwI6PP5VdxSbxf0pO71uq6/sycw+CMgdIRooRJRw8Fkx9rkGzgvmCJDXWXAqoHa6dOOpLoqGEUG8P1Y3ftV3FavG/V/+r8HlROWgJ7AzWO1JzCW3hbmfoZ+2134WXeyU931L7wH/DgeuD0NGPCuell1SV9dk0FLTiaJGikmO9bG1cfAFwgAJEDsXCB4CH+Uq1NjEvMwWQweok4kdLY10aO2eMergKMcCOxT8/ugK2GRSAFB9ei5rgSm2nN4mGz1ewvwbGXeG3TBHf22S94CRL6vHaNKWcP1f+joaqBZV/X10pX0hT4PnP1BO+ly8wMGrdAvGWzMpUrlSd79DPX76OJlXFW5ockik0vSA9vswFrb7GRArxtsReP3VF81YA6W8iNWazsSifpGOWItsEmE0pGaSlpqbLxbKSbgUYmdPm1h9I3BlP74/lEVa20qf17TDwMb/1776+zdgJJ8GPz9qK3krbb3JnyKOkEDdH+2Af2WVU7wjCnhq+71xn7HdCV55Zw9gQ4vAm0H175/Q5NFXdu7+QFdJ5g/cad6wTY7jZXURn2T+n4c1Dc8A37QDa0CMyVLqm6ptR2JoG5Hkn5YnONVV7WoT8lFxZgqltjp0xZGnxhMzc1P/20rf171/fyW3Nf/GBXtnl596ac+703ipwAkQECPqp9tpybqdQ9yal5W8TugTwlfTTd+sb5jtSV5hfeA3z9TP4xJ5HVVQda0/f0M4MCSR88d5UDbvwOt+rFTRiPGZMcahQxT36Sq+0urOgZXgZlIbdUtz2+s3yoBfW+iukdKMEI1VYuGJizlSVj5X+5ixGBqLXup/5IvvFf7tpU/r6b+/D7IUSe0rfpVXafve5P4CaBrjuIHf+m3rDwJ7TUVOPoJqnxHKiY6QNUbf8WG8rVVy+qT8BiUgNewf0OqINuPMOy4RXlA8mb1A1B/vsJeANxbVF/VVlOVHFA/bbospWTb0mPSE5MdaxUy7NFf9PczgNh56l5YNdHnBmMsQ77gtf2IbZugTizajzBRsJXoexNt2QeQbTauCrGKColKeVWNsSVv5ddcjBhMTWqjrrL4cXzN28maPbrxlDMkUTLW9SO6k516KxV9+LlK/BRGfcbKG8o7eVTzegOTXGMS8Lok8j/PBNoNNeK4FRTeA46t015WW4lZOV2lbaaopkvdBfw6W7vtmKsv0O1lw6vnTFlVaUmdG2rBZMeaSW0e3aSk9rXfQPbEqL/MtTWQNZQhXxJ9fsQEFfDDeODOW0DfN03/l0XLXup4q01iHrbZCXqyhipEA6sUy1W8iRpbclH+A+fkDjzIrVsM9SF0hLrK4ujqajaQAAOXVX3fL/xs+iklqnsL67tUtHIJjv4vVP9T8Wataxt9k1yjPht1SOQL7xpZUlkLxe2aS8zK6SptE7uaLnWX7p6b+Zm6S+lqa0dmyqrKBtSb16LnxiIRuXjWvs2Dv9QNbD9uDxxYLs6cROVfksoJTPmXJHWX9nJDfsQOLAE+aK0utTLl3Enl7aAAVK2revi8/OZbXoUoq9T2ROavrn5z8jDs2BVvouVJl971ZZJHJSBSG6Dn64YdW1cM9WXAu8ALG9UDYFYka6b7h7X8c1aUa9q4qrv5l5cqWRN9vot1+WwYm8gbXVJZG8H4ErNy1f2u6VtNl7Id2D2tbscqZ+hvb3VqjP3hsti5Fj93HUt2GgtDkojK9fzG9m6o9Uuiozjb0B8xff+qqqvq2kHJ/NWJTsVjVqxCrFx0LJXq35tK5q9dVWNQ4/NKSRigLgU7tq6Wv+priaE+tR/xqMqipiJ4Q9uNGMvJQ13qqYu+1W8NiT7fRU2ppxFVSpUTeUPaatVa2moko0vMNDtAnarpdk0zoAF9DVWOxvz2VkffDhr1Wd1tBJbsNBZ1+UuoPPnZNlHdtXdlqH5/FRjyJSmnKb0wgqF/sRgqZBgQk6Lu8jzyv+p/Y87qTq7KqxDDnlf/W/6Doin5qekcdSQqFWPQVXIkqfRVlvlXLQGR2gBDV0G/kqEaYqhP1V3HiurSfqMie9ea1w9dVfO1CB2h7l5uYioAgkQKEVvEVyLR3SZKF02ppyGx6Nh/ebJYm4olldWWtpqbjt81k/UU1HEswLjf3uroG7sl9ebVgclOY2FwFUgNyntFpeyseTtjviRaP2KGqociVX1uvrWpmDQ98bqOqhodiUp1ry9Put7O0i8Jqy7Z0idZslRi/ci+uFk9lk7layNrpv/o1pHvA+FT9ThY7d9DQVA/KlIJAATgdruJeu9H57GdPB6+tpZqWX3olcDrsf/QEUCvmqpwKrXVqi7xtxRitLcz5li6nuv7Ol30jd1SevNWg9VYlkrsLn51GX+nOrX1ijL2SxIyTN2+ZdsEI4qVG0aRqiZpCnoSGPCe4e91xcbn5fQ9X13VbIYORmdJ6vwjW6GBudSm+ipIfUW+BzTvpu45VLEHpKyZ+mYN6Bhn52FbrgpVjH9BXdLkgXzNskx4YlHpWAxuMxnNQvvWPs6OrnMFHpbw6YhDV7WsPir3/iy4A+TeVI9GrXUNatn/gHfV3curu3aVX1fxuOd3Ace/MCzuymq9fgYwtpqursfS9Vzf1+mibwcNc1V364kjKMM0IygLgoDC0kLjXnzhZyBuftUh6//2rvqLXRe69l1Xz32lOy6VEljTHbifiWq/JG5+QPRx3TeT87uBHZONi2n4Z0D7Z417LTUs+nzOHN0rNF6u3EsOwHNf1v27pSuuG78DBdmAizfQ4olHn3Nd6wCkHo/D+tjfcQfuOKlqAwDoJr0IL+RqlqkgxYYJ3dEzyLPqfpp3B/48oX6ekw4kfVPpd8Qf+NviR+daU4ymvgZiv+5aArDl+ToEKwF6vvqwW3pdbovV/K6l7gZ21vJ75uoHlD0woKF9Nceq629vZRd+rjCyufHfH2c7Z0gk4lY76nv/ZrID0yQ7BSUFcF1aSxsAIiKiRiJ/Xj5c7F1E3ae+92+22SEiIiKrxjY7JuJs54z8efk1b2RsldI/fgQCexsfnBgxVFZbtZEYxeW1xmrCKglqGExdLVNP4lIzseSX88hUFGuW+coc8NbgdvhbiK8ZI2sAdDYDqFR9JxZTVtPVVEVp6ipBE3G2czbLcQFWYwEw06znes9ercPI/6p7A4mlYmPoe1eA0xsM78pbXzOml8ea9ot6hmx9GjESNUBKlYDj6TnIvl8EbzdH9AjygI3U0rpZW6gGPIcTGYZtdgxQ78mOSqkeq8bYsUFMnVhU/KG4ewk4tKKGHgoPW+LHnK3/HxP+oBERNWr63r9ZjWUORg+CVk9d/Cp3a/Zup56LSlc8gPkGntPV/ZqIiKgSNlA2B6MGQTNjYtF+RDWDrTWggeeIiKjRYsmOORgzCJqxg32Jpab5noiIiCwYkx1z0GdESjc/4Nl16pFILSWxYLURERE1QEx2zKHGqRseVlcNWg489pQZgiMiIrIubLNjLtVNYsd2MERERKJiyY45sR0MERGRyTHZqQ81jQfDdjBEREQmxWTH1FJ3AbFztMfVkfmr2+ywqoqIqEHgiNYNG5MdU6puSghFhno52+YQEVm82JQMLNqdioy8Is0yP7kjFgwNwcBQvxpeSZaCDZRNRaVUl+jo7Fr+cFnsXPV2RERkkWJTMvDaN6e1Eh0AyMwrwmvfnEZsSh0nUaZ6wWTHVGqdEkIAFLfU2xERkcVRqgQs2p1a05+sWLQ7FUpVo59i0uIx2TEVfaeEMGrqCCIiMrXj6TlVSnQqEgBk5BXheHpO/QVFRmGyYyr6TglhzNQRRERkctn3q090jNmOzIcNlE1Fnykh6mMGcyIyOfbUsU7ebo6ibkfmw2THVPSZEsIcM5hTo8SbsemI3VOH75Xl6BHkAT+5IzLziqr7kxW+cvV7RJZNIghCo29ZpVAoIJfLkZeXB5lMJu7OU3dBiJ0DSYXGyvkOPnAY+h/YhQ4X91hEOjSEbrOWcIOvLQZd6+NSM/HaN6er3AjLX7X2n10MusYN4b1qbMp7YwE6/2TV+R5bwue5sdD3/s1kB6ZNdmJTMvDm92cQWnYO3shFNtxxXBUMFaSwkwAyJ1vIHW1RJgBFZSrYSgC5kx1KlSoUlio13y6JRAJHWwlKVcCDUiVUKgHuTnZwsLNBSZkSD8pUcLG3RRtvVxSWlOHqvQdwsJVieCd/hDVzx938YtzNL0ZOYQkycovgI3fA/QdlyFYUo6hUiWA/N1y9k4/L2fkoLCmDzMEWKokUznZSONjZwMPZDkWlKni42ONeQQkelJahuFSFkjIlipQCvF0d0NbXDW6Odjj7Zy7uFhRDEATY2zyKz9nOBl5ujvCssI+SMgH2Nurz8pU5wFvmCJmjHW7nFiInvwgdlOcgV+Yg18YDR4pbw9bWFiVK9Wsq/utgK4Xjw/17y+1xNbsAGbkPkF9cBjsbCYoeXp9gXxmC/dxwMSsfBcVl8JE5okNzOZL/zEVWXjEKi0sBiURzfqVKFQSoz6NMJcDVwQbuTnZQPChBSGkKgl0LcUfljh/uNkd+qQQu9jZo4eEMLzdHSCTq981fboe2RSnIzb6JKw9ccdW5A0Kbe8DNyRZHLt7B1bsFsHn4vpepBEACeLmqr9Pd/GLcLSgGoL3sXmEJXO1t0MTZHgKALEWx1jXwb6K+jvvOZ+HE9dxqP59PPu4BexsbZCqKYG8jQVGpEoqiMpSpBDR1tUeQlytsocJjhX9Akp+F66VuuO7cAY/5yFFYrERadj5c7aVwd7LDXw/KcL+opMp77i1zQnt/GfKLy5CVV4RMRREcbKVwsrdFWDM5su8XY29qJgqKHw3D4GQrQUtPFzT3cIK3myPcneyhgoDcwhJcuK3Ajb8KoFQBNhLA0c4WzvZSONjZwsFWCgdbKaRSKRztJBAEIKegBHfyi6t8/oqVKgTI7dHP6TLS06/i5D0HJCrbQvWwKaOtFGju7ggnOxtk3S/GX4VlVW52EglQU0ccZzsJItr54s+/ClGiFODjZg+JVApvNwcIEJD/oAznMxUoLClDUakKOYVl1e7Lz80eKgCeLnZwdbTFrdwilCkFeLrYQeZsj+JSJUrKHn0Xmro6ABBwN//Rd638+kgefsZLygTYSYGcwlKt3xV7WynyHpSioEQJGwngYGuj+Ty7OFT9Hnm62qOwWKl1npBIIAgCMvOKUKpUaT7XHs52uHq3AHfyi6FUqrT27WT36H0s/3x4ujrAw8Ued/OLkHpbgT//egB7G4nmPS5PO4pKlJrfp6IyJZzs1K9v4mKP3Afq3z0/d0e4Otgi4dJd3M57ABd7WwQ2dUZOfonWb1aZSoCbo/o8O7dogsSr9/BrSgYKS1Sa98NeCjR1dYSv3B7uTnbIKSzF3YIS2EqAP3OLUPZoU0gBeLvawcPVQetalH9XK8cU5OUCG4n6vARBwJ376t8BlUqFUuWje4XM0RaKojIUlChhK5VUuSc42aqvZ8XfWF+5E0KbyRB3LhOXHv7eyx3t4Ghvq/nslH9HCktKkVNQqjmeu7M9HGylKC5TaR3D3tZG81tpJ6362bGxkcJH5ojI9r54qXcQ7G3Fay7MZMcApkh2lCoBq+Iu4tP9F9FDeqFKokM1i5QexwK7TfCXPOrlcFvwwKLScdir6mHGyAyLzZLPQx8NPf6aWPO5EVkqCYDJfYMwb3CIKPvT9/5tNXfdNWvWIDAwEI6OjujZsyeOHz9utlhiUzIQuiAWaQe34IjDNHxr/x5W23+Kb+3fwxGHaYiUmi+2hiBSehxr7VbCF9rdOX2Rg7V2K816/QyJzZLPQx8NPf6aWPO5EVkyAcDnh9Kx9JfUej2uVSQ73333HWbMmIEFCxbg9OnT6NixIyIjI5GdnV3vscSmZODVb06jr/J3/pgaQQoVFthtUv+/UhV3+fMFdv8HKVSob4bEZsnnoY+GHn9NrPnciBqKLw+no6Ss/r5jVpHsfPTRR5g0aRImTJiAkJAQrFu3Ds7Ozli/fn29xqFUCVjwUwp/TOugh/QC/CU5Va5bOakE8JfcQw/phfoNDIbFZsnnoY+GHn9NrPnciBoKlQD8X+K1ejteg+96XlJSglOnTmHevHmaZVKpFBEREUhMTNT5muLiYhQXF2ue5+XlAVDX/dXF8as5yLibi+7SC3CV3EN+Ddu64i46lybhhCq4Tse0Nu7SLCj0aEbmXpIFlSrQ9AFVPKYBsQGw2PPQhyW/D3VlzedG1JBc/DMbCkXTOu2j/L5da/NjoYG7deuWAEA4evSo1vJZs2YJPXr00PmaBQsWCFBXHfLBBx988MEHHw38cfPmzRpzhQZfsmOMefPmYcaMGZrnKpUKOTk58PT0hEQi3lgICoUCAQEBuHnzpvjj95AGr3P94bWuH7zO9YPXuf6Y6loLgoD79+/D39+/xu0afLLTtGlT2NjYICtLe0LNrKws+Pr66nyNg4MDHBwctJa5u7ubKkTIZDJ+keoBr3P94bWuH7zO9YPXuf6Y4lrL5fJat2nwDZTt7e3RtWtXxMfHa5apVCrEx8cjPDzcjJERERGRJWjwJTsAMGPGDIwfPx7dunVDjx49sHLlShQUFGDChAnmDo2IiIjMzCqSnRdffBF37tzBO++8g8zMTHTq1AmxsbHw8fExa1wODg5YsGBBlSozEhevc/3hta4fvM71g9e5/pj7WnO6CCIiIrJqDb7NDhEREVFNmOwQERGRVWOyQ0RERFaNyQ4RERFZNSY7JrRmzRoEBgbC0dERPXv2xPHjnOlcX0uXLkX37t3h5uYGb29vjBgxAmlpaVrbFBUVITo6Gp6ennB1dcXIkSOrDC5548YNDBkyBM7OzvD29sasWbNQVlZWn6fSoCxbtgwSiQQxMTGaZbzO4rl16xb++c9/wtPTE05OTggLC8PJkyc16wVBwDvvvAM/Pz84OTkhIiICly5d0tpHTk4OoqKiIJPJ4O7ujokTJyI/v6aZ+BoXpVKJ+fPnIygoCE5OTmjVqhXeffddrbmTeJ2Nc+jQIQwdOhT+/v6QSCTYuXOn1nqxrusff/yBJ598Eo6OjggICMCKFSvqHnzdZ6ciXb799lvB3t5eWL9+vXDu3Dlh0qRJgru7u5CVlWXu0BqEyMhI4euvvxZSUlKEpKQkYfDgwUKLFi2E/Px8zTavvvqqEBAQIMTHxwsnT54UnnjiCaFXr16a9WVlZUJoaKgQEREhnDlzRvjll1+Epk2bCvPmzTPHKVm848ePC4GBgUKHDh2E6dOna5bzOosjJydHaNmypfDSSy8Jx44dE65evSrs3btXuHz5smabZcuWCXK5XNi5c6eQnJwsDBs2TAgKChIePHig2WbgwIFCx44dhd9//104fPiw8PjjjwtjxowxxylZpPfff1/w9PQU9uzZI6Snpws//PCD4OrqKqxatUqzDa+zcX755Rfh7bffFrZv3y4AEHbs2KG1XozrmpeXJ/j4+AhRUVFCSkqKsHXrVsHJyUn4/PPP6xQ7kx0T6dGjhxAdHa15rlQqBX9/f2Hp0qVmjKrhys7OFgAIBw8eFARBEHJzcwU7Ozvhhx9+0Gxz/vx5AYCQmJgoCIL6iymVSoXMzEzNNmvXrhVkMplQXFxcvydg4e7fvy+0bt1aiIuLE5566ilNssPrLJ45c+YIffr0qXa9SqUSfH19hf/85z+aZbm5uYKDg4OwdetWQRAEITU1VQAgnDhxQrPNr7/+KkgkEuHWrVumC74BGTJkiPDyyy9rLXvuueeEqKgoQRB4ncVSOdkR67p+9tlnQpMmTbR+O+bMmSO0bdu2TvGyGssESkpKcOrUKURERGiWSaVSREREIDEx0YyRNVx5eXkAAA8PDwDAqVOnUFpaqnWNg4OD0aJFC801TkxMRFhYmNbgkpGRkVAoFDh37lw9Rm/5oqOjMWTIEK3rCfA6i2nXrl3o1q0bXnjhBXh7e6Nz58748ssvNevT09ORmZmpda3lcjl69uypda3d3d3RrVs3zTYRERGQSqU4duxY/Z2MBevVqxfi4+Nx8eJFAEBycjKOHDmCQYMGAeB1NhWxrmtiYiL69u0Le3t7zTaRkZFIS0vDX3/9ZXR8VjGCsqW5e/culEpllRGcfXx8cOHCBTNF1XCpVCrExMSgd+/eCA0NBQBkZmbC3t6+ygSuPj4+yMzM1Gyj6z0oX0dq3377LU6fPo0TJ05UWcfrLJ6rV69i7dq1mDFjBt566y2cOHEC06ZNg729PcaPH6+5VrquZcVr7e3trbXe1tYWHh4evNYPzZ07FwqFAsHBwbCxsYFSqcT777+PqKgoAOB1NhGxrmtmZiaCgoKq7KN8XZMmTYyKj8kOWbzo6GikpKTgyJEj5g7F6ty8eRPTp09HXFwcHB0dzR2OVVOpVOjWrRuWLFkCAOjcuTNSUlKwbt06jB8/3szRWY/vv/8emzdvxpYtW9C+fXskJSUhJiYG/v7+vM6NGKuxTKBp06awsbGp0mMlKysLvr6+ZoqqYZoyZQr27NmD/fv3o3nz5prlvr6+KCkpQW5urtb2Fa+xr6+vzvegfB2pq6mys7PRpUsX2NrawtbWFgcPHsTq1atha2sLHx8fXmeR+Pn5ISQkRGtZu3btcOPGDQCPrlVNvxu+vr7Izs7WWl9WVoacnBxe64dmzZqFuXPnYvTo0QgLC8PYsWPxxhtvYOnSpQB4nU1FrOtqqt8TJjsmYG9vj65duyI+Pl6zTKVSIT4+HuHh4WaMrOEQBAFTpkzBjh07sG/fvirFml27doWdnZ3WNU5LS8ONGzc01zg8PBxnz57V+nLFxcVBJpNVuek0Vv3798fZs2eRlJSkeXTr1g1RUVGa//M6i6N3795Vhk+4ePEiWrZsCQAICgqCr6+v1rVWKBQ4duyY1rXOzc3FqVOnNNvs27cPKpUKPXv2rIezsHyFhYWQSrVvbTY2NlCpVAB4nU1FrOsaHh6OQ4cOobS0VLNNXFwc2rZta3QVFgB2PTeVb7/9VnBwcBA2bNggpKamCpMnTxbc3d21eqxQ9V577TVBLpcLBw4cEDIyMjSPwsJCzTavvvqq0KJFC2Hfvn3CyZMnhfDwcCE8PFyzvrxL9IABA4SkpCQhNjZW8PLyYpfoWlTsjSUIvM5iOX78uGBrayu8//77wqVLl4TNmzcLzs7OwjfffKPZZtmyZYK7u7vw008/CX/88YcwfPhwnV13O3fuLBw7dkw4cuSI0Lp160bfJbqi8ePHC82aNdN0Pd++fbvQtGlTYfbs2ZpteJ2Nc//+feHMmTPCmTNnBADCRx99JJw5c0a4fv26IAjiXNfc3FzBx8dHGDt2rJCSkiJ8++23grOzM7ueW7JPPvlEaNGihWBvby/06NFD+P33380dUoMBQOfj66+/1mzz4MED4fXXXxeaNGkiODs7C88++6yQkZGhtZ9r164JgwYNEpycnISmTZsKM2fOFEpLS+v5bBqWyskOr7N4du/eLYSGhgoODg5CcHCw8MUXX2itV6lUwvz58wUfHx/BwcFB6N+/v5CWlqa1zb1794QxY8YIrq6ugkwmEyZMmCDcv3+/Pk/DoikUCmH69OlCixYtBEdHR+Gxxx4T3n77ba2uzLzOxtm/f7/O3+Xx48cLgiDedU1OThb69OkjODg4CM2aNROWLVtW59glglBhWEkiIiIiK8M2O0RERGTVmOwQERGRVWOyQ0RERFaNyQ4RERFZNSY7REREZNWY7BAREZFVY7JDREREVo3JDhEREVk1JjtEJIpr165BIpEgKSnJ3KFoXLhwAU888QQcHR3RqVMnc4dDRGbCZIfISrz00kuQSCRYtmyZ1vKdO3dCIpGYKSrzWrBgAVxcXJCWlqY1QWFFL730EkaMGCHaMQMDA7Fy5UrR9kdEdcdkh8iKODo6Yvny5fjrr7/MHYpoSkpKjH7tlStX0KdPH7Rs2RKenp4iRkVEDQmTHSIrEhERAV9fXyxdurTabRYuXFilSmflypUIDAzUPC8v7ViyZAl8fHzg7u6OxYsXo6ysDLNmzYKHhweaN2+Or7/+usr+L1y4gF69esHR0RGhoaE4ePCg1vqUlBQMGjQIrq6u8PHxwdixY3H37l3N+n79+mHKlCmIiYlB06ZNERkZqfM8VCoVFi9ejObNm8PBwQGdOnVCbGysZr1EIsGpU6ewePFiSCQSLFy4sIYr90i/fv0wbdo0zJ49Gx4eHvD19dV6rSAIWLhwIVq0aAEHBwf4+/tj2rRpmtdev34db7zxBiQSiaZE7d69exgzZgyaNWsGZ2dnhIWFYevWrQYdFwByc3PxyiuvwMfHR3N99+zZo1l/5MgRPPnkk3ByckJAQACmTZuGgoICzfrPPvsMrVu3hqOjI3x8fPD888/rdU2IGjomO0RWxMbGBkuWLMEnn3yCP//8s0772rdvH27fvo1Dhw7ho48+woIFC/D3v/8dTZo0wbFjx/Dqq6/ilVdeqXKcWbNmYebMmThz5gzCw8MxdOhQ3Lt3D4D6Zv3MM8+gc+fOOHnyJGJjY5GVlYVRo0Zp7WPjxo2wt7dHQkIC1q1bpzO+VatW4cMPP8QHH3yAP/74A5GRkRg2bBguXboEAMjIyED79u0xc+ZMZGRk4M0339T73Ddu3AgXFxccO3YMK1aswOLFixEXFwcA2LZtGz7++GN8/vnnuHTpEnbu3ImwsDAAwPbt29G8eXMsXrwYGRkZyMjIAAAUFRWha9eu+Pnnn5GSkoLJkydj7NixOH78uN7HValUGDRoEBISEvDNN98gNTUVy5Ytg42NDQB1KdbAgQMxcuRI/PHHH/juu+9w5MgRTJkyBQBw8uRJTJs2DYsXL0ZaWhpiY2PRt29fva8JUYNW53nTicgijB8/Xhg+fLggCILwxBNPCC+//LIgCIKwY8cOoeJXfcGCBULHjh21Xvvxxx8LLVu21NpXy5YtBaVSqVnWtm1b4cknn9Q8LysrE1xcXIStW7cKgiAI6enpAgBh2bJlmm1KS0uF5s2bC8uXLxcEQRDeffddYcCAAVrHvnnzpgBASEtLEwRBEJ566imhc+fOtZ6vv7+/8P7772st6969u/D6669rnnfs2FFYsGBBjfupeN3Kj9+nT58q+50zZ44gCILw4YcfCm3atBFKSkp07q9ly5bCxx9/XGv8Q4YMEWbOnKn3cffu3StIpVLNdaps4sSJwuTJk7WWHT58WJBKpcKDBw+Ebdu2CTKZTFAoFLXGRmRtWLJDZIWWL1+OjRs34vz580bvo3379pBKH/1E+Pj4aEowAHUpkqenJ7Kzs7VeFx4ervm/ra0tunXrpokjOTkZ+/fvh6urq+YRHBwMQF0yUa5r1641xqZQKHD79m307t1ba3nv3r3rdM7lOnTooPXcz89Pc54vvPACHjx4gMceewyTJk3Cjh07UFZWVuP+lEol3n33XYSFhcHDwwOurq7Yu3cvbty4ofdxk5KS0Lx5c7Rp00bnMZKTk7FhwwataxsZGQmVSoX09HT87W9/Q8uWLfHYY49h7Nix2Lx5MwoLCw26LkQNFZMdIivUt29fREZGYt68eVXWSaVSCIKgtay0tLTKdnZ2dlrPJRKJzmUqlUrvuPLz8zF06FAkJSVpPS5duqRVpeLi4qL3Pk2hpvMMCAhAWloaPvvsMzg5OeH1119H3759dV7Dcv/5z3+watUqzJkzB/v370dSUhIiIyOrNL6u6bhOTk41xpyfn49XXnlF67omJyfj0qVLaNWqFdzc3HD69Gls3boVfn5+eOedd9CxY0fk5ubqe1mIGiwmO0RWatmyZdi9ezcSExO1lnt5eSEzM1Mr4RFzbJzff/9d8/+ysjKcOnUK7dq1AwB06dIF586dQ2BgIB5//HGthyEJjkwmg7+/PxISErSWJyQkICQkRJwTqYGTkxOGDh2K1atX48CBA0hMTMTZs2cBAPb29lAqlVXiGj58OP75z3+iY8eOeOyxx3Dx4kWDjtmhQwf8+eef1b6uS5cuSE1NrXJdH3/8cdjb2wNQl7RFRERgxYoV+OOPP3Dt2jXs27fPiCtA1LAw2SGyUmFhYYiKisLq1au1lvfr1w937tzBihUrcOXKFaxZswa//vqraMdds2YNduzYgQsXLiA6Ohp//fUXXn75ZQBAdHQ0cnJyMGbMGJw4cQJXrlzB3r17MWHChCoJQm1mzZqF5cuX47vvvkNaWhrmzp2LpKQkTJ8+XbRz0WXDhg3473//i5SUFFy9ehXffPMNnJyc0LJlSwDqcXYOHTqEW7duaXqZtW7dGnFxcTh69CjOnz+PV155BVlZWQYd96mnnkLfvn0xcuRIxMXFIT09Hb/++qumB9qcOXNw9OhRTJkyRVNa9tNPP2kaKO/ZswerV69GUlISrl+/jk2bNkGlUqFt27YiXh0iy8Rkh8iKLV68uEo1U7t27fDZZ59hzZo16NixI44fP25QT6XaLFu2DMuWLUPHjh1x5MgR7Nq1C02bNgUATWmMUqnEgAEDEBYWhpiYGLi7u2u1D9LHtGnTMGPGDMycORNhYWGIjY3Frl270Lp1a9HORRd3d3d8+eWX6N27Nzp06IDffvsNu3fv1ozjs3jxYly7dg2tWrWCl5cXAODf//43unTpgsjISPTr1w++vr5GDWS4bds2dO/eHWPGjEFISAhmz56tSRI7dOiAgwcP4uLFi3jyySfRuXNnvPPOO/D399fEvX37djzzzDNo164d1q1bh61bt6J9+/biXBgiCyYRKlfeExEREVkRluwQERGRVWOyQ0RERFaNyQ4RERFZNSY7REREZNWY7BAREZFVY7JDREREVo3JDhEREVk1JjtERERk1ZjsEBERkVVjskNERERWjckOERERWbX/B2XlMMOJbkaKAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_instance_score(od_preds, y_outlier, labels, od.threshold, ylim=(0, 150))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Use OHE instead of ordinal encoding for the categorical variables"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since we will apply one-hot encoding (OHE) on the categorical variables, we convert `cat_vars_ord` from the ordinal to OHE format. `alibi_detect.utils.mapping` contains utility functions to do this. The keys in `cat_vars_ohe` now represent the first column index for each one-hot encoded categorical variable. This dictionary will later be used in the counterfactual explanation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0: 3, 3: 66, 69: 11}\n"
     ]
    }
   ],
   "source": [
    "cat_vars_ohe = ord2ohe(X_fit, cat_vars_ord)[1]\n",
    "print(cat_vars_ohe)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fit a one-hot encoder on the categorical data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>OneHotEncoder()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">OneHotEncoder</label><div class=\"sk-toggleable__content\"><pre>OneHotEncoder()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "OneHotEncoder()"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "enc = OneHotEncoder(categories='auto')\n",
    "enc.fit(X_fit[:, :n_categories])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Transform `X_fit` to OHE:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(494021, 98)\n"
     ]
    }
   ],
   "source": [
    "X_ohe = enc.transform(X_fit[:, :n_categories])\n",
    "X_fit = np.array(np.c_[X_ohe.todense(), X_fit[:, n_categories:]].astype(np.float32, copy=False))\n",
    "print(X_fit.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Initialize and fit outlier detector\n",
    "\n",
    "Initialize:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "od = Mahalanobis(threshold,\n",
    "                 n_components=n_components, \n",
    "                 std_clip=std_clip, \n",
    "                 start_clip=start_clip,\n",
    "                 cat_vars=cat_vars_ohe,\n",
    "                 ohe=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Apply fit method:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "od.fit(X_fit,\n",
    "       d_type=d_type,\n",
    "       disc_perc=disc_perc,\n",
    "       standardize_cat_vars=standardize_cat_vars)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Run outlier detector and display results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Transform outlier batch to OHE:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000, 98)\n"
     ]
    }
   ],
   "source": [
    "X_ohe = enc.transform(X_ord)\n",
    "X_outlier = np.array(np.c_[X_ohe.todense(), X_num].astype(np.float32, copy=False))\n",
    "print(X_outlier.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Predict outliers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "od_preds = od.predict(X_outlier, return_instance_score=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "F1 score and confusion matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "F1 score: 0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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nFFRUZHjF7XzXgUBAQEqKyur1HM7duyo9957T02bNr2qFQyApzGscB2Ki4tTbGyshg4dqm3btmnz5s0aPny47rjjDnXu3Nntz2vVqpVjUuOOHTv0xz/+sVIVDMDdgoODNXr0aE2ePFmrVq3Snj17NHLkSJ09e1ZJSUnq2rWrgoKC9Nhjj+nQoUNaunTpJasRmjZtqqysLG3fvl2nTp2SzWa74nOTk5OVl5ene++9V1u2bNGhQ4e0evVq/elPf6p0ogF4EsnBdchkMum///2v6tWrp9/85jeKi4tT8+bN9fbbb1fJ82bNmqV69erptttuU79+/RQfH6+OHTtWybOAinr++eeVmJioYcOGqWPHjjp48KBWr16tevXqKTw8XEuWLNH//vc/xcbGatmyZYalwJKUmJiou+66Sz169FBERISWLVt2xWdGR0drw4YNKisrU+/evRUbG6tx48YpLCxMPj78uMW1g1c2AwAAA1JZAABgQHIAAAAMSA4AAIAByQEAADAgOQAAAAYkBwAAwIDkAAAAGJAcAAAAA5IDAABgQHIAAAAMSA4AAIAByQEAADD4/00WFlgPOKL6AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = od_preds['data']['is_outlier']\n",
    "f1 = f1_score(y_outlier, y_pred)\n",
    "print('F1 score: {}'.format(f1))\n",
    "cm = confusion_matrix(y_outlier, y_pred)\n",
    "df_cm = pd.DataFrame(cm, index=labels, columns=labels)\n",
    "sns.heatmap(df_cm, annot=True, cbar=True, linewidths=.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot instance level outlier scores vs. the outlier threshold:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_instance_score(od_preds, y_outlier, labels, od.threshold, ylim=(0,200))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
